编译 curl 库时出错

error while compiling curl library

我在构建 curl 库时收到此错误消息:

libssl.a(s2_clnt.o): relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC

我尝试使用 -fPIC 开关 - 没有任何帮助。 openssl 库在编译之前没有任何错误。 make check也通过了

信息:我正在针对另一个版本的 glibc 编译 curl - ./configure 中提供了包含路径以及 $CPPFLAGS$LDFLAGS = = -L/usr/glibc-2.22/lib [== 这是新 glibc 版本的路径]

只有当我用新的glibc版本编译时才会抛出这个错误。

当一个对象使用隐藏符号构建而另一个对象没有构建时,您会遇到这种错误。

因为我看到你正在尝试 link 一个 .a 存档文件,也就是静态库,我假设静态库是用不同的隐藏符号选项构建的,而不是你在 curl 中使用的选项。

我认为当一个对象使用 PIC 而另一个对象不使用时,您也可以得到这个。要修复此问题,请使用相同的 PIC 设置编译静态库和 curl。

这是我前几天收集的issue的解决方案: