共享库重定位R_X86_64_PC32错误

我正在试图在一个64位Ubuntu的盒子上做32位库。 我正在创build.so,如下所示

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

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

我已经尝试编译与-fPIC。 它没有工作。

请让我知道,如果我需要使用任何标志,而编译.C或一些标志,而创build.so

谢谢,

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

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

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

为了解决这个问题,你还必须链接包含set_hidden定义的目标文件,或者删除对它的调用。