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# - 从 int[] 转换为 int*

c++ - 如何使 lambda 函数成为类的友元?

linux - 如何在自定义 ssh 软件上使用 git?

C# 通过句柄 (hWnd) 32 位和 64 位获取路径/文件名

delphi - 为什么我的程序在 Vista 64 上找不到它的 DLL?

c++ - 使用 CRTP 进行选择性静态成员继承

c++ - 数组,removeFirst() 不工作?

linux - 如何在 linux 中通过脚本间接访问文件

java - maven-jaxb2-plugin 不在 linux 机器上编译 xsd 但在 windows 上工作?

windows - Microsoft Windows 64 位应用程序开发最佳实践安装文件夹