Я пытался сделать qt 5.4.1 с конфигурацией openSsl, но я получил некоторые ошибки во время сделать это.
Я настроил это как показано ниже:
OPENSSL_LIBS='-L/usr/local/ssl/lib -lssl -lcrypto' ./configure -prefix $PWD/qtbase -opensource -debug-and-release -nomake tests -openssl-linked -I/usr/local/ssl/include -L/usr/local/ssl/lib
а потом make
,
последние 10 строк вывода:
/usr/bin/ld: /usr/local/ssl/lib/libssl.a(s2_srvr.o): relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC
/usr/local/ssl/lib/libssl.a: could not read symbols: Bad value
collect2: error: ld returned 1 exit status
make[3]: *** [../../lib/libQt5Network.so.5.4.1] Error 1
make[3]: Leaving directory `/mnt/l/software/qt-everywhere-opensource-src-5.4.1/qtbase/src/network'
make[2]: *** [sub-network-make_first] Error 2
make[2]: Leaving directory `/mnt/l/software/qt-everywhere-opensource-src-5.4.1/qtbase/src'
make[1]: *** [sub-src-make_first] Error 2
make[1]: Leaving directory `/mnt/l/software/qt-everywhere-opensource-src-5.4.1/qtbase'
make: *** [module-qtbase-make_first] Error 2
Чтобы связать статическую библиотеку с общей библиотекой на x86_64, статическая библиотека должна быть скомпилирована с -fPIC
, Теперь вы можете собрать OpenSSL вручную с установленным параметром -fPIC, но это будет немного хлопотно.
Я бы предложил настроить Qt с -openssl
вместо -openssl-linked
, Тогда SSL не будет связан во время компиляции, но будет загружен динамически (dlopen
) во время выполнения. Это обычный способ обработки OpenSSL в Qt, в том числе из-за несовместимости между лицензиями OpenSSL и GPL.