2017-12-16 36 views
0

gcc 4.8.5 툴체인을 사용하여 CentOS 7에 libcrypto.so.1.0.0을 빌드하려고합니다. 아래에서 내가 무엇을해야하는지 명확하지 않다는 오류가 나타납니다.gcc 4.8.5 툴체인으로 libcrypto.so를 빌드하는 방법

/usr/bin/ld : libcrypto.a (e_gost_err.o) : 재배치 공유 객체를 만들 때`.data '에 대한 R_X86_64_32를 사용할 수 없습니다. -fPIC로 다시 컴파일하십시오.

제안 사항? -fPIC 다시 컴파일 :

[[email protected] openssl-1.0.0s]$ cat /etc/centos-release 
CentOS Linux release 7.4.1708 (Core) 

[[email protected] openssl-1.0.0s]$ gcc --version 
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16) 
Copyright (C) 2015 Free Software Foundation, Inc. 
This is free software; see the source for copying conditions. There is NO 
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 

[[email protected] openssl-1.0.0s]$ make libcrypto.so.1.0.0 
make[1]: Entering directory `/home/user/src/openssl/openssl-1.0.0s' 
make[2]: Entering directory `/home/user/src/openssl/openssl-1.0.0s' 
/usr/bin/ld: libcrypto.a(e_gost_err.o): relocation R_X86_64_32 against `.data' can not be used when making a shared object; recompile with -fPIC 
libcrypto.a(e_gost_err.o): error adding symbols: Bad value 
collect2: error: ld returned 1 exit status 
make[2]: *** [link_a.gnu] Error 1 
make[2]: Leaving directory `/home/user/src/openssl/openssl-1.0.0s' 
make[1]: *** [do_linux-shared] Error 2 
make[1]: Leaving directory `/home/user/src/openssl/openssl-1.0.0s' 
make: *** [libcrypto.so.1.0.0] Error 2 
[[email protected] openssl-1.0.0s]$ 
+0

Configure 플래그에'shared'를 추가하십시오. OpenSSL 위키의 [컴파일 및 설치] (https://wiki.openssl.org/index.php/Compilation_and_Installation)도 참조하십시오. 또는 Linux 및 Unix [INSTALL] (https://github.com/openssl/openssl/blob/master/INSTALL) 파일에 있습니다. 이미 한번 설정/빌드 했으므로 이전 빌드의 모든 아티팩트를 지우려면'makecleclean '을해야합니다. – jww

답변

-1

오류가 더 많거나 적은 분명 지금 무엇을해야하는지에 대한 것입니다. 따라서 CFLAGS-fPIC이 포함되어 있는지 확인하십시오 (예 : CFLAGS=-fPIC make ...). 근본적인 문제는 (실수로 실수로) 재배치 가능 코드와 재배치 가능 코드를 혼합하려고 시도한다는 것입니다.

+0

이상한 .... 나는 makefile에서 cflags를 확인했고 -fPIC는 이미있었습니다. 그래서 나는 깨끗하게 만들고 -fPIC 옵션이 전달되었다는 것을 확인하고 make가 성공적으로 빌드되었음을 확인했습니다. 어떻게 든 이전의 비 - 재배치 가능한 객체 파일에서 작동하게하는 일찍 깨끗한 단계를 빠뜨린 것 같습니다. 감사. – Denis