2015-05-13 364 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

非常感謝您的回答,我一定會考慮一下 –