2017-09-28 71 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构建。