阅读量:133
在Linux上部署C++程序并使用动态链接库(Dynamic Link Library,简称DLL)的过程分为几个步骤。以下是一个详细的指南:
1. 创建动态链接库
首先,你需要创建一个动态链接库。假设你要创建一个名为 libmylib.so 的库,其中包含一个简单的函数 add。
创建源文件
创建一个名为 mylib.cpp 的文件,内容如下:
#include
extern "C" {
int add(int a, int b) {
return a + b;
}
}
注意使用 extern "C" 来防止C++的名称修饰(name mangling)。
编译库
使用 g++ 编译器编译这个文件,并生成动态链接库:
g++ -shared -fPIC -o libmylib.so mylib.cpp
2. 创建主程序
创建一个名为 main.cpp 的文件,内容如下:
#include
#include
int main() {
void* handle = dlopen("libmylib.so", RTLD_NOW);
if (!handle) {
std::cerr << "Cannot open library: " << dlerror() << std class="hljs-keyword">return 1;
}
int (*add)(int, int) = (int (*)(int, int))dlsym(handle, "_Z3addi");
if (!add) {
std::cerr << "Cannot find symbol: " << dlerror() << std class="hljs-built_in">dlclose(handle);
return 1;
}
int result = add(3, 4);
std::cout << "Result: " << result class="hljs-built_in">dlclose(handle);
return 0;
}
3. 编译主程序
使用 g++ 编译器编译主程序,并链接到动态链接库:
g++ -o main main.cpp -L. -lmylib
4. 运行程序
确保动态链接库在系统的库路径中,然后运行主程序:
./main
你应该会看到输出 Result: 7。
5. 设置库路径(可选)
如果你将动态链接库放在非标准路径中,可以使用 LD_LIBRARY_PATH 环境变量来指定库路径:
export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
./main
总结
通过以上步骤,你成功地在Linux上部署了一个C++程序,并使用动态链接库。关键步骤包括创建动态链接库、编写主程序、编译主程序并链接到动态链接库,最后运行程序。