我对 C++ 和 eclipse 还比较陌生。
我在 Visual Studio 2012 中有一个带有 C++/CLI 包装器的 native C++ 静态库。
现在,我正在使用 Eclipse(Juno Service Release 2)和 GCC 4.2.4
在 Linux 中构建 native C++ 代码。我在 Eclipse 中创建了一个 Shared Library Empty Project 并添加了我所有的 .h 和 .cpp 文件,然后让 Eclipse 进行构建。但是我得到了错误
relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
我在项目->设置->GCC C++编译器->杂项->其他标志中添加了-fPIC标志。
我不认识任何精通 Linux/Eclipse 的人,所以我不确定我选择了最佳路径。
是否有比我刚才描述的方式更好/“更正确”的方式来构建共享库? 我采用的方法有什么问题吗?
最佳答案
添加 -fPIC
是正确的做法,你应该没问题。
共享库在加载时需要重定位(通过ldd
),主要有两种方法:加载时重定位和位置无关代码(PIC),后者是现代解决方案的主流,架构。
关于c++ - Eclipse,构建共享库的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20904566/