2. 编写程序
3. 编译程序
4. 运行程序
创建一个名为“libadd.so”的文件,并将以下代码保存到该文件中
include
include
extern "C" __attribute__ ((visibility ("default")))
int add(int a, int b)
return a + b;
2. 编写程序
创建一个名为“main.cpp”的文件,并将以下代码保存到该文件中
include
include
include
int main()
void handle;
int (add)(int,int);
char error;
handle = dlopen("./libadd.so", RTLD_LZY);
if (!handle) {
fputs (dlerror(), stderr);
exit(1);
}
dlerror();
add = (int ()(int,int)) dlsym(handle, "add");
if ((error = dlerror()) != NULL) {
fputs(error, stderr);
exit(1);
}
printf("%d\n", add(1,2));
dlclose(handle);
return 0;
3. 编译程序
使用以下命令编译程序
g++ -o main main.cpp -ldl
4. 运行程序
使用以下命令运行程序
./main
输出结果为
gcc -fPIC -shared -o libtest.so test.c
其中,-fPIC选项表示生成位置无关代码,-shared选项表示生成共享库,-o选项表示指定输出文件名。
gcc -o test test.c -L. -ltest
gcc -o test test.c -Wl,-rpath,. -ltest
3. 运行可执行文件
export LD_LIBRRY_PTH=$LD_LIBRRY_PTH.
其中,.表示当前目录。
gcc -o test test.c -L. -ltest.so.1
gcc -o test test.c -Wl,-rpath,. -ltest.so.1
ldd libtest.so