c++ - Eclipse,构建共享库的最佳方式?

标签 c++ eclipse gcc

我对 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/

相关文章:

c++ - 我们什么时候应该为 `std::unordered_set` 提供我们自己的哈希函数

python - 从 scipy.linalg 导入 _fblas : ImportError: DLL load failed: The specified module could not be found

c - 构建最新的 Vala 版本(make check 失败并且 valac 找不到共享库)

c - 如何解决 undefined reference

c++ - C++中的delete和调用析构函数有什么区别

c++ - "const char(&a)[N]"是什么意思?

派生参数化构造函数的 C++ 设置值

java - 在 Eclipse Debug模式下复制对象的整个树

java - 禁止在 Eclipse 中登录 clojure?

c - 汇编指令 addl 使用 byte 而不是 long