2017-09-28 67 views
0

我實現web使用libwebsockets(LWS)在嵌入式ARM處理器的服務器。在我學習LWS時,我正在Ubuntu上測試gcc上的服務器。我有服務器作爲gcc構建工作,但現在想要爲ARM板構建交叉編譯版本。大廈交叉編譯ARM文件libwebsockets,除了GCC文件

我創建了一個工具鏈文件:

// Set the path to ARM directories to just above the bin directory 
set(CROSS_PATH usr/local/opt/crosstool/arm-linux/gcc-3.3.4-glibc-2.3.2) 

// Target operating system name 
set(CMAKE_SYSTEM_NAME Linux) 

// Name of C compiler 
set(CMAKE_C_COMPILER "${CROSS_PATH}/bin/arm-linux-gcc") 
set(CMAKE_CXX_COMPILER "${CROSS_PATH}/bin/arm-linux-g++") 

// Where to look for the target environment. (More paths can be added here) 
set(CMAKE_FIND_ROOT_PATH "${CROSS_PATH}") 

// Adjust the default behavior of the FIND_XXX() commands: 
// search programs in the host environment only. 
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) 

// Search headers and libraries in the target environment only. 
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) 
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) 

我在同一水平作爲我的GCC編譯目錄中創建一個build目錄。

GCC: libwebsockets > build 
ARM: libwebsockets > buildx 

通過cmake的,CMakeList.txt所需的文件,是在當cmake的被調用(對於GCC),其被引用 「libwebsockets」:

cmake .. 

或用於臂的linux-GCC:

cmake .. -DCMAKE_TOOLCHAIN_FILE=../arm-linuc-gcc.cmake 

但是運行這最後一行更新了一些文件(如cmake緩存)並且不會創建構建文件。

如何構建ARM文件?我是否需要刪除現有的gcc版本才能創建新版本?

感謝您的幫助!

+0

如果從'buildx'刪除一切並調用會發生什麼'cmake的.. -DCMAKE_TOOLCHAIN_FILE = .. /再次手臂,linuc-gcc.cmake'? – yegorich

+0

@yegorich就是這樣,buildx中沒有任何東西,因爲它不會構建。見下面的答案。 – Gordon

回答

0

爲lwsws的說明.EXE的libwebsockets(warmcat)公佈在github上註明您從一個空的build目錄。我認爲這是在現有的LWS框架內。

但是你不能在現有的編譯器中爲不同的編譯器構建。

所以,我在交叉編譯路徑克隆LWS並創造了cmake的(的CMakeLists.txt)的新副本將填充了LWS新建文件。

這解決的是能夠創建新生成文件的問題,但我的工具鏈建立仍然是一種編譯GCC,而不是ARM-Linux的海灣合作委員會。但是,這是一個新的stackoverflow問題(即將推出...)的問題。

幫助我(傾斜)的網站是: https://gist.github.com/maoueh/14ef25a03d5722bc1e03 有一個關於LWS的部分顯示了創建一個新的LWS構建。