我比较熟悉C ++并使用eclipse。
我在Visual Studio 2012中有一个带有C ++ / CLI Wrapper的 Native C ++ Static Library 。
现在我使用 Eclipse (Juno Service Release 2)和 GCC 4.2.4在Linux中构建Native C ++代码。
我在Eclipse中创建了一个共享库空项目,并添加了我所有的.h和.cpp文件,让Eclipse进行构建。但是我收到了错误
relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
我在Project-> Settings-> GCC C ++ Compiler->中添加了 -fPIC 标志。 Miscellaneous->其他旗帜。
我不认识任何熟练使用Linux / Eclipse的人,所以我不确定我是否采取了最佳途径。
与我刚刚描述的方式相比,是否有最佳/“更正确”的方式来构建共享库? 我采取的方法有什么问题吗?
答案 0 :(得分:1)
添加-fPIC
是正确的做法,你应该没问题。
加载时需要重新定位共享库(ldd
),主要有两种方法:加载时重定位和位置无关代码(PIC),后者是现代解决方案和体系结构的主流。 / p>