2017-12-16 4 views
0

Ich versuche libcrypto.so.1.0.0 auf CentOS 7 mit gcc 4.8.5 Toolchain zu bauen. Ich bekomme unten den Fehler, dass mir nicht klar ist, was ich damit anfangen soll.wie libcrypto.so mit gcc zu erstellen 4.8.5 toolchain

/usr/bin/ld: libcrypto.a (e_gost_err.o): Verschiebung R_X86_64_32 gegen `.data 'kann nicht verwendet werden, wenn ein gemeinsames Objekt erstellt wird; kompilieren mit -fPIC

Irgendwelche Vorschläge?

[[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

Fügen Sie 'shared' zu Ihren Configure Flags hinzu. Siehe auch [Kompilieren und Installieren] (https://wiki.openssl.org/index.php/Compilation_and_Installation) im OpenSSL-Wiki; oder die Linux & Unix [INSTALL] (https://github.com/openssl/openssl/blob/master/INSTALL) Datei. Da du bereits einmal konfiguriert/gebaut hast, solltest du "distclean" machen, um alle Artefakte von vorherigen Builds zu entfernen. – jww

Antwort

-1

Der Fehler ist mehr oder weniger klar, was jetzt zu tun ist: rekompilieren mit -fPIC. Stellen Sie also sicher, dass -fPIC in Ihrem CFLAGS enthalten ist (z. B. CFLAGS=-fPIC make ...). Das zugrunde liegende Problem ist, dass Sie (höchstwahrscheinlich unbeabsichtigt) versuchen, verschiebbaren und nicht verschiebbaren Code zu mischen.

+0

Seltsam .... Ich habe die Cflags im Makefile überprüft und -fPIC war schon da. Also habe ich redd make make clean gemacht und um zu bestätigen, dass die Option -fPIC übergeben wurde und es war und zusätzlich wurde das .so erfolgreich erstellt. Irgendwie habe ich einen make clean-Schritt verpasst, der dazu geführt hat, dass er von alten nicht verschiebbaren Objektdateien funktioniert hat. Vielen Dank. – Denis

Verwandte Themen