2012-07-08 127 views
4

的時候我不知道這裏做什麼,我跑make並得到了這一點:未定義參考編譯OpenSSL的

make[2]: Entering directory `/tmp/openssl-1.0.1/test' 
(:; LIBDEPS="${LIBDEPS:--L.. -lssl -L.. -lcrypto -ldl}"; LDCMD="${LDCMD:-gcc}"; LDFLAGS="${LDFLAGS:--DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -fno-exceptions -Wa,--noexecstack -m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM}"; LIBPATH=`for x in $LIBDEPS; do echo $x; done | sed -e 's/^ *-L//;t' -e d | uniq`; LIBPATH=`echo $LIBPATH | sed -e 's/ /:/g'`; LD_LIBRARY_PATH=$LIBPATH:$LD_LIBRARY_PATH ${LDCMD} ${LDFLAGS} -o ${APPNAME:=rc4test} rc4test.o ${LIBDEPS}) 
rc4test.o: In function `main': 
rc4test.c:(.text+0x30): undefined reference to `OPENSSL_cpuid_setup' 
collect2: ld returned 1 exit status 
make[2]: *** [link_app.] Error 1 
make[2]: Leaving directory `/tmp/openssl-1.0.1/test' 
make[1]: *** [rc4test] Error 2 
make[1]: Leaving directory `/tmp/openssl-1.0.1/test' 
make: *** [build_tests] Error 1 

我覺得這是一個gcc的東西,但我不知道如何處理這一點。我應該手動編譯這個嗎?

+0

什麼是你的操作系統和你傳遞給'/ config'哪些參數? – 2012-07-08 12:10:14

+0

我試過一些'-fPIC','-fno-exceptions',並且在./config和Debian Squeeze中沒有任何東西。我知道我可以使用'apt-get',但我寧願編譯自己的。 – Strawberry 2012-07-08 19:12:23

+0

不作任何保證,但你可以嘗試編輯'crypto/cryptlib.c',尋找包含'#if!defined(OPENSSL_CPUID_SETUP)&&!defined(OPENSSL_CPUID_OBJ)'的行並移除刪除&&!defined(OPENSSL_CPUID_OBJ)片。您身處優秀公司,請參閱[這裏](http://code.google.com/p/chromium-source-browsing/source/browse/patches/empty_OPENSSL_cpuid_setup.patch?repo=third-party--openssl)。 – 2012-07-09 00:30:25

回答

4

我遇到了同樣的問題,並能夠通過傳遞添加-DOPENSSL_PIC到配置調用來解決它:

./config -fPIC -DOPENSSL_PIC 
+0

不適合我..與以前一樣的錯誤 – Zibri 2018-03-08 11:05:55