Linux C++ 调用动态库函数的过程与原理
在 Linux 系统下,C++ 调用动态库(.so 文件)主要分为**静态链接(编译期链接)和动态加载(运行时加载)**两种方式。以下是详细流程和代码示例:
1. 创建动态库
假设需要导出一个 add 函数:
// mylib.h
#pragma once
extern "C" int add(int a, int b);
// mylib.cpp
#include "mylib.h"
int add(int a, int b) {
return a + b;
}
编译生成动态库:
g++ -fPIC -c mylib.cpp -o mylib.o
g++ -shared mylib.o -o libmylib.so
2. 静态链接方式(编译期链接)
客户端代码
// main.cpp
#include "mylib.h"
#include <iostream>
int main() {
std::cout << "5 + 3 = " << add(5, 3) << std::endl;
return 0;
}
编译客户端程序
g++ main.cpp -L. -lmylib -o main
运行
export LD_LIBRARY_PATH=./:
./main


