我在为ARM设备交叉编译stunnel时遇到了困难。 交叉编译OpenSSL是通过这个CMake项目完成的:http://www.valvers.com/open-software/projects/openssl-cmake/并且它在目标设备上成功运行。
我在编译OpenSSL时使用的CMake工具链文件:
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_C_COMPILER /home/elias/toolchains/axotec/3.4.1/bin/arm-linux-gcc)
SET(CMAKE_CXX_COMPILER /home/elias/toolchains/axotec/3.4.1/bin/arm-linux-g++)
SET(CMAKE_FIND_ROOT_PATH /home/elias/toolchains/axotec/3.4.1/arm-linux /home/elias/toolchains/axotec/3.4.1/library-for-ramdisk )
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
我的问题是如何以类似的方式交叉编译stunnel?我正在努力将stunnel makefile传递给整个sysroot目录,就像在cmake工具链文件中SET(CMAKE_FIND_ROOT_PATH /home/elias/toolchains/axotec/3.4.1/arm-linux /home/elias/toolchains/axotec/3.4.1/library-for-ramdisk )
我的尝试包括,在运行configure之后,用--sysroot =重写makefile CFLAGS但是在哪里放第二个文件夹?(library-for-arm)
答案 0 :(得分:0)
总体思路:
openssl-cmake项目使用CMake构建基础架构。因此,只需指定工具链就可以了。我查看了stunnel源代码,他们使用传统的GNU Autotools构建基础架构,这意味着你不能直接在该项目上使用cmake。 (./configure&& make&& make install)
您必须使用ExternalProject_Add来使用cmake编译stunnel。 请查看以下链接以获取更多信息。
还有:
<强>的CMakeLists.txt 强>
cmake_minimum_required (VERSION 3.2)
include(ExternalProject)
set(CROSS_INFO CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} AR=${CMAKE_AR})
ExternalProject_Add(
stunnel
URL http://www.stunnel.org/downloads/stunnel-5.17.tar.gz
CONFIGURE_COMMAND <SOURCE_DIR>/configure --host=powerpc --with-sysroot=${CMAKE_FIND_ROOT_PATH} ${CROSS_INFO}
)
其他信息: 我试图在我的系统上本地运行上面的项目,我最后花了一个小时用我的powerpc工具链文件调试它。 stunnel的配置脚本存在一些问题。 sysroot和with-ssl目录的计算方式有点不正确。您可能不得不搞乱配置文件以使交叉编译工作。但总体思路如上所述。