我正在使用Linux 64位下的Eclipse CDT编写一个简单的C共享库。代码中有一个对
<stdlib.h>
中的rand()
函数的引用。它可以编译,但在链接时,链接器报告以下错误:gcc -shared -o "libalg.so" ./sort.o
/usr/bin/ld: ./sort.o: relocation R_X86_64_PC32 against undefined symbol `rand@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Bad value
sort.o是从文件编译出的目标文件,libalg.so是目标共享库的名称。
有人能解释一下为什么会发生这种情况吗?
谢谢。