除了 GCC 文件之外,为 libwebsockets 构建交叉编译的 ARM 文件
Building cross-compiled ARM files for libwebsockets, in addition to GCC files
我正在为嵌入式 ARM 处理器使用 libwebsockets (LWS) 实现 Web 服务器。当我了解 LWS 时,我正在 Ubuntu 中的 gcc 上测试服务器。我的服务器作为 gcc 构建工作,但现在想为 ARM 板构建交叉编译版本。
我创建了一个工具链文件:
// 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 构建目录的同一级别创建了一个构建目录。
GCC: libwebsockets > build
ARM: libwebsockets > buildx
cmake所需的文件CMakeList.txt在调用cmake时引用的"libwebsockets"中(对于gcc):
cmake ..
或者对于 arm-linux-gcc:
cmake .. -DCMAKE_TOOLCHAIN_FILE=../arm-linuc-gcc.cmake
但是 运行 这最后一行更新了一些文件(比如 cmake 缓存)并且没有创建构建文件。
如何构建 ARM 文件?在创建新构建之前,我是否需要删除现有的 gcc 构建?
感谢您的帮助!
github 上发布的用于 libwebsockets (warmcat) 的 lwsws.exe 的说明指定您从一个空的构建目录开始。我认为这是在现有 LWS 框架内的意思。
但是您不能在现有编译器中为不同的编译器构建。
因此,我在我的交叉编译器路径中克隆了 LWS,并使用加载了 LWS 的 cmake (CMakeLists.txt) 的新副本创建了新的构建文件。
这解决了能够创建新构建文件的问题,但我的工具链设置仍在针对 gcc 而不是 arm-linux-gcc 进行编译。但这是一个新的 Whosebug 问题(即将推出...)。
帮我(斜)的网站是:
https://gist.github.com/maoueh/14ef25a03d5722bc1e03
LWS 上有一个部分显示创建新的 LWS 构建。
我正在为嵌入式 ARM 处理器使用 libwebsockets (LWS) 实现 Web 服务器。当我了解 LWS 时,我正在 Ubuntu 中的 gcc 上测试服务器。我的服务器作为 gcc 构建工作,但现在想为 ARM 板构建交叉编译版本。
我创建了一个工具链文件:
// 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 构建目录的同一级别创建了一个构建目录。
GCC: libwebsockets > build
ARM: libwebsockets > buildx
cmake所需的文件CMakeList.txt在调用cmake时引用的"libwebsockets"中(对于gcc):
cmake ..
或者对于 arm-linux-gcc:
cmake .. -DCMAKE_TOOLCHAIN_FILE=../arm-linuc-gcc.cmake
但是 运行 这最后一行更新了一些文件(比如 cmake 缓存)并且没有创建构建文件。
如何构建 ARM 文件?在创建新构建之前,我是否需要删除现有的 gcc 构建?
感谢您的帮助!
github 上发布的用于 libwebsockets (warmcat) 的 lwsws.exe 的说明指定您从一个空的构建目录开始。我认为这是在现有 LWS 框架内的意思。
但是您不能在现有编译器中为不同的编译器构建。
因此,我在我的交叉编译器路径中克隆了 LWS,并使用加载了 LWS 的 cmake (CMakeLists.txt) 的新副本创建了新的构建文件。
这解决了能够创建新构建文件的问题,但我的工具链设置仍在针对 gcc 而不是 arm-linux-gcc 进行编译。但这是一个新的 Whosebug 问题(即将推出...)。
帮我(斜)的网站是: https://gist.github.com/maoueh/14ef25a03d5722bc1e03 LWS 上有一个部分显示创建新的 LWS 构建。