2011-11-04 213 views
1

構建和安裝OpenSSL 1.0.0.e的工作沒有問題,我所要做的就是在Makefile中設置正確的編譯器。無法鏈接libCURL與OpenSSL

編譯libcurl中沒有OpenSSL的工作正常,但使用OpenSSL編譯時使用

./configure --host=mipsel-angstrom-linux PCRECONFIG=/usr/local/crosstoolchain/usr/local/bin/pcre-config --with-openssl 

我收到以下錯誤信息:

ld: libssl.a(s2_clnt.o): relocation R_MIPS_HI16 against `a local symbol' can not be used when making a shared object; recompile with -fPIC 
libssl.a: could not read symbols: Bad value 

我試圖編譯的OpenSSL與-fPIC也試圖用-fPIC對於libCURL無濟於事。我該如何解決這個問題?

回答

0

在tarball的根目錄下打開名爲Configure的OpenSSL文件。將下降到大約610行,你會看到MIPS以下(找到一個更好的匹配,如果這是窮人):

"vxworks-mips","ccmips:-mrtp -mips2 -O -G 0 -B\$(WIND_BASE)/host/\$(WIND_HOST_TYPE)/lib/gcc-lib/ -D_VSB_CONFIG_FILE=\"\$(WIND_BASE)/target/lib/h/config/vsbConfig.h\" -DCPU=MIPS32 -msoft-float -mno-branch-likely -DTOOL_FAMILY=gnu -DTOOL=gnu -fno-builtin -fno-defer-pop -DNO_STRINGS_H -I\$(WIND_BASE)/target/usr/h -I\$(WIND_BASE)/target/h/wrn/coreip::-D_REENTRANT:VXWORKS:-Wl,--defsym,__wrs_rtp_base=0xe0000000 -L \$(WIND_BASE)/target/usr/lib/mips/MIPSI32/sfcommon::${mips32_asm}:o32::::::ranlibmips:", 

添加-fPIC所使用的選項。


或者,打開壓縮包的根稱爲Makefile.org OpenSSL的文件。將下降到大約60行,你會看到以下內容:

CC= gcc 

添加如下CC

CC= gcc -fPIC 

同類一個黑客,因爲你想做的事,對於CFLAGS,但在Makefile不吸收宏觀。


或者,您可以等到OpenSSL的配置完成後(即運行./config後),然後打開所有的makefile文件並將其添加到從Makefile.org模板創建的CFLAGS。請務必訪問cryptoengines等子目錄中的makefile。


加入OpenSSL的最終解決方案是自定義的行添加到configConfigure。 Ben Laurie和其他人在執行定製構建時會這樣做。搜索configConfigure用於「debug-ben」或「ben-debug」或類似搜索。


對於libcurl,我相信這是一個automake項目。只需執行以下操作:

$ export CFLAGS="-fPIC" 
$ ./config