2015-05-13 325 views
0

我在为ARM设备交叉编译stunnel时遇到了困难。 交叉编译OpenSSL通过这个CMake项目完成:http://www.valvers.com/open-software/projects/openssl-cmake/并且它在目标设备上成功运行。编译OpenSSL的,当我使用交叉编译stunnel

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) 

我的问题是我怎么跨越以类似的方式编译安全通道?我与传递安全通道的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)

我atempts包括运行配置后挣扎,改写makefile文件与--sysroot CFLAGS =但如果把第二个文件夹? (库换臂)

回答

0

总体思路:

OpenSSL的,CMake的项目使用CMake的基础设施建设。因此只需指定工具链为您工作。我研究了stunnel源代码,他们使用传统的GNU Autotools构建基础架构,这意味着您不能直接在该项目上使用cmake。时(./configure & &使& & make install)并

你将不得不使用ExternalProject_Add使用cmake编译安全通道。 查看以下链接以获取更多信息。

而且这样的:

的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目录的计算方式是不正确的。您可能必须弄乱配置文件才能使交叉编译工作。但总体思路是在上面指定的。

+0

非常感谢您的回答,我一定会考虑一下 –