Installieren von Openssl 1.0.2 unter Ubuntu 19.04

Installieren von Openssl 1.0.2 unter Ubuntu 19.04

Ich habe den Quellcode einer in Qt/C++ geschriebenen Anwendung, die ich versuchen kann, unter Linux zu erstellen.

Das System ist Ubuntu 19.04. Die Anwendung erfordert einige ältere Paketversionen, z. B. openssl-1.0.2.

Ich habe nach der Installation die folgenden Schritte ausgeführt, um Qt 5.11 einzurichten:

sudo su -
apt-get install build-essential
apt-get install qtcreator
apt-get install qt5-default
apt-get install git
apt-get install qtwebengine5-dev
apt-get install qtmultimedia5-dev
apt-get install qtscript5-dev
apt-get install open-vm-tools-desktop
cd /opt
wget https://www.openssl.org/source/openssl-1.0.2l.tar.gz  
gunzip openssl-1.0.2l.tar.gz 
tar xf openssl-1.0.2l.tar 
cd openssl-1.0.2l/
./config 
make install
ln -s /opt/openssl-1.0.2l/include/openssl/ /usr/include/openssl
apt install libleptonica-dev
apt-get install tesseract-ocr
apt-get install libtesseract-dev
apt-get install libvlc-dev 

Nach den obigen Schritten wird die Anwendung in Qt kompiliert, beim Erstellen trat jedoch der folgende ldFehler auf:

Libssl konnte nicht gefunden werden. Libcrypto konnte nicht gefunden werden.

Ich denke, das liegt daran, dass diese Bibliotheken als statisch verknüpfte .aBibliotheken und nicht als gemeinsam genutzte Objektbibliotheken vom Typ .so existieren.

Ich habe versucht, es .sowie folgt aufzubauen:

cd /opt/openssl-1.0.2l
./config shared
make install

Dies schlägt fehl mit:

make[2]: Entering directory '/opt/openssl-1.0.2l'
[ -z "" ] || gcc -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -m64 -DL_ENDIAN -O3 -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DRC4_ASM -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -Iinclude \
    -DFINGERPRINT_PREMAIN_DSO_LOAD -o fips_premain_dso  \
    fips_premain.c fipscanister.o \
    libcrypto.a -ldl
make[3]: Entering directory '/opt/openssl-1.0.2l'
make[4]: Entering directory '/opt/openssl-1.0.2l'

/usr/bin/ld: libcrypto.a(gost_eng.o): relocation R_X86_64_PC32 against symbol `stderr@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC

/usr/bin/ld: final link failed: nonrepresentable section on output
collect2: error: ld returned 1 exit status
make[4]: *** [Makefile.shared:169: link_a.gnu] Error 1
make[4]: Leaving directory '/opt/openssl-1.0.2l'
make[3]: *** [Makefile:357: do_linux-shared] Error 2
make[3]: Leaving directory '/opt/openssl-1.0.2l'
make[2]: *** [Makefile:310: libcrypto.so.1.0.0] Error 2
make[2]: Leaving directory '/opt/openssl-1.0.2l'
make[1]: *** [Makefile:109: shared] Error 2
make[1]: Leaving directory '/opt/openssl-1.0.2l/crypto'
make: *** [Makefile:287: build_crypto] Error 1

Die Frage ist also, wie man openssl-1.0.2 dazu bringt, libssl.so und libcrypt.so unter Ubuntu 19.04 zu erstellen.

Antwort1

Der ./config --sharedBefehl ergänzt -fPICdie Makefiles CFLAGS, wodurch alle C-Dateien in einer Form kompiliert werden, die für die Einbindung in eine gemeinsam genutzte Bibliothek geeignet ist.

.oAllerdings verfügen alle Dateien, die während des statischen Standardbuilds bereits in Objektcode (Dateien) kompiliert wurden, nicht über die entsprechenden CFLAGS. Der Versuch, diese Dateien in eine gemeinsam genutzte Bibliothek einzubinden, schlägt fehl.

Die Lösung besteht darin, vor dem Ausführen mit der neuen Konfiguration der gemeinsam genutzten Bibliothek make cleanalle Dateien zu löschen ..omake install

verwandte Informationen