/usr/bin/ld: ReadWrite_c.o: relocation R_X86_64_PC32 against symbol `_ZSt4cout@@GLIBCXX_3.4' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: final link failed: bad value collect2: error: ld returned 1 exit status
时间: 2024-03-26 10:38:53 浏览: 67
解决gedit: symbol lookup error: /home/xxx/libgobject-2.0.so.0: undefined symbol: g_date_copy问题
5星 · 资源好评率100%
这个错误是因为在编译一个共享库时,使用的对象文件(ReadWrite_c.o)中包含需要动态链接的标准库符号(例如cout),但是这些符号的位置不能确定,需要在运行时动态链接。而编译的过程中缺少-fPIC选项,导致无法生成可用于动态链接的代码。
要解决这个错误,可以在编译ReadWrite_c.o时添加-fPIC选项,例如:
```
g++ -c -fPIC ReadWrite_c.cpp -o ReadWrite_c.o
```
然后再重新编译共享库即可。如果在链接时仍然出现类似的错误,可以尝试添加-fPIC选项重新编译所有的对象文件。
阅读全文