【问题标题】:shared library relocation R_X86_64_PC32 error共享库重定位 R_X86_64_PC32 错误
【发布时间】:2012-03-15 21:10:05
【问题描述】:

我正在尝试在 64 位 Ubuntu 机器上制作 32 位库。我正在创建.so如下

gcc - 共享 -Wl,-soname,libtest.so *.o

我得到 /usr/bin/ld : 重定位 R_X86_64_PC32 对符号“set_bright”在制作共享对象时不能使用;使用 -fPIC 重新编译。

我已经尝试使用 -fPIC 进行编译。没用。

如果我需要在编译 .c 时使用任何标志或在创建 .so 时使用一些标志,请告诉我

谢谢,

【问题讨论】:

    标签: c linux shared


    【解决方案1】:

    如果你调用一个声明为隐藏的函数,我相信你会得到那个错误,例如

    int set_hidden(void) __attribute__((visibility("hidden")));
    

    并且它没有定义在同一个共享对象中。

    要解决它,您还必须链接包含set_hidden 定义的目标文件,或者删除对它的调用。

    【讨论】:

      猜你喜欢
      • 2014-05-06
      • 1970-01-01
      • 2016-06-30
      • 2018-12-27
      • 1970-01-01
      • 2021-05-17
      • 2016-01-15
      • 2021-05-23
      • 1970-01-01
      相关资源
      最近更新 更多