c++ - 如何为 C++ 代码制作 64 个共享 64 位 Linux 兼容库 (*.so)

标签 c++ linux 64-bit shared-libraries

我的要求是处理一些接口(interface) .h 文件。现在我的项目中有 .h 和 .cpp/.cc 文件。

我需要在 Linux Fedora 上使用 NetBeans/Eclipse 将其编译为共享的 64 位 Linux 兼容库 (*.so)。

最佳答案

由于 GCC C++ ABI 约定从一个 GCC 版本到下一个版本(例如从 g++-4.4 >g++-4.6)您的共享库可能依赖于用于构建它的g++版本

(实际上,g++ 内部的更改通常很小,因此您可能不会受到影响)

如果您希望符号可通过 dlsym 公开访问您最好在头文件中声明它 extern "C" (否则您应该 mangle its name )。

关于如何创建共享库,请阅读类似 Program Library Howto 的文档.

另请参阅this question

我建议使用普通的命令行工具(例如Makefile-s)构建共享库。不要依赖像 NetBeans/Eclipse 这样的复杂 IDE 来构建它们(它们无论如何都会调用命令行实用程序)。

关于c++ - 如何为 C++ 代码制作 64 个共享 64 位 Linux 兼容库 (*.so),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9634382/

相关文章:

c++ - 为 64 位 Windows 构建 ZBar

c++ - 类成员函数参数列表是否可能依赖于模板参数?

c++ - 如何在大项目中使用#include?

linux - 行到列

linux - 为什么在 AWS EC2 实例的主目录中自动创建 '~' 波形符目录

c++ - 内存泄漏,找不到源头

c++ - 我的程序配置文件中的顶级项目是 _Unwind_SjLj_Unregister 和 _Unwind_SjLj_Register 是件好事吗?

linux - JRI REngine eval() 方法总是返回 null

visual-c++ - 为什么 Visual Studio 2012 Express 的自动并行化报告功能仅适用于 Win32?