【问题标题】:Building cross-compiled ARM files for libwebsockets, in addition to GCC files除了 GCC 文件之外,还为 libwebsockets 构建交叉编译的 ARM 文件
【发布时间】:2018-03-10 19:32:58
【问题描述】:

我正在为嵌入式 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 位于“libwebsockets”中,在调用 cmake 时(对于 gcc)会引用该文件:

cmake ..

或者对于 arm-linux-gcc:

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

但运行最后一行会更新一些文件(如 cmake 缓存)并且不会创建构建文件。

如何构建 ARM 文件?是否需要在创建新版本之前删除现有的 gcc 版本?

感谢您的帮助!

【问题讨论】:

  • 如果您从 buildx 中删除所有内容并再次调用 cmake .. -DCMAKE_TOOLCHAIN_FILE=../arm-linuc-gcc.cmake 会发生什么?
  • @yegorich 就是这样,buildx 中从来没有任何东西,因为它不会构建。请参阅下面的答案。

标签: gcc build arm cross-compiling libwebsockets


【解决方案1】:

在 github 上发布的 libwebsockets (warmcat) 的 lwsws .exe 说明指定您从一个空的构建目录开始。我认为这意味着在现有的 LWS 框架内。

但是您不能在现有编译器中为不同的编译器构建。

因此,我在我的交叉编译器路径中克隆了 LWS,并使用 LWS 加载的 cmake (CMakeLists.txt) 的新副本创建了新的构建文件。

这解决了能够创建新构建文件的问题,但我的工具链设置仍在为 gcc 而不是 arm-linux-gcc 编译。但这是一个新的 stackoverflow 问题(即将推出......)的问题。

(间接)帮助我的网站是: https://gist.github.com/maoueh/14ef25a03d5722bc1e03 LWS 中有一个部分显示了如何创建新的 LWS 构建。

【讨论】:

    猜你喜欢
    • 2014-09-30
    • 2013-10-09
    • 1970-01-01
    • 2015-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-05
    相关资源
    最近更新 更多