error: relocation R_X86_64_32S against `vtable for xxxxx' can not be used when making a shared object; recompile with -fPIC
在linux x64 系统下,eclipse CDT环境中编译c++程序时出错,验证发现windows下正常运行,在 32位linux系统下也不会出现此错误。
此错误的主要原因是在AMD 64位的linux下,必须添加-fPIC编译选项,该选项的作用主要是用于解决程序重定位问题,该问题
可参考http://www.linuxidc.com/Linux/2011-06/37268.htm中的描述。
该问题解决方法:
1,程序依赖的库均需加-fPIC重新编译;
2,在eclipse CDT下添加-fPIC的位置是Project->Properties->Build->Settings->Tool Settings->Optimization->Other optimization flags: -fPIC
3,重新编译本工程,编译通过。