【问题标题】:Eclipse, best way to build shared library?Eclipse,构建共享库的最佳方式?
【发布时间】: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,所以我不确定我选择了最佳路径。

有没有比我刚才描述的方式更好/“更正确”的方式来构建共享库? 我采取的方法有什么问题吗?

【问题讨论】:

    标签: c++ eclipse gcc


    【解决方案1】:

    添加-fPIC 是正确的做法,应该没问题。

    共享库需要在加载时重新定位(通过ldd),主要有两种方法:加载时重新定位和位置无关代码 (PIC),后者是现代解决方案和架构中的主流。

    【讨论】:

    • 和我一样使用 Eclipse?允许它创建它的makefile和所有东西,那也应该没问题?或者如果我自己创建一个makefile并创建一个“具有现有代码的Makefile项目”会更好?
    • 我认为使用 Eclipse 的“共享库”项目很好。如果您对 Makefile/s 感到满意,那么直接管理某些方面会更容易,但是您没有在问题中提到任何具体的复杂性(除了 -fPIC),所以我认为您应该同时继续使用 Eclipse。此外,谷歌“用 Eclipse 构建共享库”我刚刚做了,并且出现了许多好的页面。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多