1

我尝试使用 openSsl 配置制作 qt 5.4.1,但在制作过程中出现了一些错误。

我将其配置如下:

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
4

1 回答 1

1

要将静态库链接到 x86_64 上的共享库,静态库需要使用-fPIC. 您现在可以使用 -fPIC 集手动构建 OpenSSL,但这有点麻烦。

我建议配置 Qt-openssl而不是-openssl-linked. 然后 SSL 不会在编译时链接,而是dlopen在运行时动态加载( )。这是在 Qt 中处理 OpenSSL 的常用方法,也是因为 OpenSSL 和 GPL 许可证之间的不兼容。

于 2015-05-30T07:55:58.567 回答