Eclipse,构建共享库的最佳方式?
Posted
技术标签:
【中文标题】Eclipse,构建共享库的最佳方式?【英文标题】:Eclipse, best way to build shared library? 【发布时间】:2014-01-03 13:15:32 【问题描述】:我对 C++ 和使用 eclipse 比较陌生。
我在 Visual Studio 2012 中有一个带有 C++/CLI 包装器的本机 C++ 静态库。
现在我正在使用 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->Miscellaneous->Other Flags中添加了-fPIC标志。
我不知道任何人精通 Linux/Eclipse,所以我不确定我选择了最佳路径。
有没有比我刚才描述的方式更好/“更正确”的方式来构建共享库? 我采取的方法有什么问题吗?
【问题讨论】:
【参考方案1】:添加-fPIC
是正确的做法,应该没问题。
共享库需要在加载时重新定位(通过ldd
),主要有两种方法:加载时重新定位和位置无关代码 (PIC),后者是现代解决方案和架构中的主流。
【讨论】:
和我一样使用 Eclipse?允许它创建它的makefile和所有东西,那也应该没问题?或者如果我自己创建一个makefile并创建一个“具有现有代码的Makefile项目”会更好? 我认为使用 Eclipse 的“共享库”项目很好。如果您对 Makefile/s 感到满意,那么直接管理某些方面会更容易,但是您没有在问题中提到任何具体的复杂性(除了 -fPIC),所以我认为您应该同时继续使用 Eclipse。此外,谷歌“用 Eclipse 构建共享库”我刚刚做了,并且出现了许多好的页面。以上是关于Eclipse,构建共享库的最佳方式?的主要内容,如果未能解决你的问题,请参考以下文章