компиляция Qt 5 не выполняется под make в debian64

Я пытался сделать 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

1

Решение

Чтобы связать статическую библиотеку с общей библиотекой на x86_64, статическая библиотека должна быть скомпилирована с -fPIC, Теперь вы можете собрать OpenSSL вручную с установленным параметром -fPIC, но это будет немного хлопотно.

Я бы предложил настроить Qt с -openssl вместо -openssl-linked, Тогда SSL не будет связан во время компиляции, но будет загружен динамически (dlopen) во время выполнения. Это обычный способ обработки OpenSSL в Qt, в том числе из-за несовместимости между лицензиями OpenSSL и GPL.

1

Другие решения


По вопросам рекламы [email protected]