Установка Openssl 1.0.2 на Ubuntu 19.04

У меня есть источник приложения, записанного в QT/C++, который я могу попытаться основываться на Linux.

Системой является Ubuntu 19.04. Приложение требует некоторых более старых версий пакета, например, openssl-1.0.2.

Я выполнил следующие шаги после установки для установки Qt 5.11:

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 

После вышеупомянутых шагов компиляции приложения в QT, но здание дали ld ошибка:

Не удалось найти libssl Не могущий найти libcrypto

Я думаю, что это вызвано тем, что они освобождают, существуют как статичный связанный .a библиотеки, не как .so библиотеки общего объекта.

Я попробовал сборку .so следующим образом:

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

Это перестало работать с:

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

Таким образом, вопрос, как заставить openssl-1.0.2 производить libssl.so и libcrypt.so на Ubuntu 19.04.

0
задан 23 May 2019 в 23:10

1 ответ

Команда ./config --shared добавляет -fPIC к файлу Makefile CFLAGS, что приводит к компиляции любых файлов C в форме, подходящей для связи с общей библиотекой.

Тем не менее, любые файлы, которые уже были скомпилированы в объектный код (.o файлы) во время статической сборки по умолчанию, не будут иметь соответствующих CFLAGS. Попытка связать эти файлы в общей библиотеке не удастся.

Решение состоит в том, чтобы запустить make clean для удаления всех файлов .o перед запуском make install с новой конфигурацией общей библиотеки.

0
ответ дан 23 May 2019 в 23:10

Другие вопросы по тегам:

Похожие вопросы: