编译 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的解决方案:
我在构建 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的解决方案: