来源:DBA札记
在 Linux 下使用 C++ 创建和使用动态库(通常是个简 .so 文件,即 Shared Object)包含几个关键步骤:创建动态库、单例C动的用编译、态库链接,个简以及在应用程序中使用这个库。单例C动的用下面是态库一个简要的指南:
动态库是一种特殊的二进制文件,可以在运行时被一个或多个程序共享。个简为了创建一个动态库,单例C动的用你需要编写相应的态库 C++ 代码。假设我们有一个简单的个简函数 hello(),源码库我们想将其放入动态库中:
#include <iostream>using namespace std;
int hello(){
cout << "hello world" << endl;
return 0;
}
使用 g++(GNU C++ 编译器)来编译代码为动态库。单例C动的用使用 -fPIC(Position Independent Code)选项来生成与位置无关的态库代码,这是个简创建共享库所必需的。使用 -shared 来创建共享库,单例C动的用并指定输出文件的态库名称(通常以 .so 结尾)。
g++ -fPIC -shared -o libhello.so hello.cpp
这将生成 libhello.so 文件。
要在另一个程序中使用这个库,你需要编写一个程序来调用库中的函数。例如:
// main.cpp#include <iostream>using namespace std;
void hello(); // 声明函数int main(){
hello(); // 调用函数 return 0;
}
编译这个程序并链接到你的动态库。你需要指定库的位置(如果它不在标准路径中):
g++ -o main main.cpp -L. -lhello
这里,亿华云计算-L. 选项告诉编译器在当前目录查找库,-lhello 选项告诉它链接 libhello.so(注意 lib 前缀和 .so 后缀在指定时会被省略)。
在运行程序之前,你可能需要设置 LD_LIBRARY_PATH 环境变量以包含你的库文件,特别是当它不在标准库路径中时:
export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH./main
这告诉运行时链接器在当前目录中查找动态库。
通过以上步骤,你可以在 Linux 下创建和使用 C++ 动态库。