首页 » 开发 » 生成Linux动态库

生成Linux动态库

生成Linux动态库的一个简单示例:

$ gcc -fPIC -c blcalled.c 
$ gcc -shared -Wl,-soname,libdlcalled.so -o libdlcalled.so blcalled.o     // -Wl, L, not 1
$ gcc myprog.c -L . -ldlcalled -ldl
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./
$ ./a.out

编译参数说明:

-fpic, -fPIC
产生位置无关代码。pic: position independent code,pic产生更紧凑更快的代码,但平台依赖性更强。
-shared
产生共享目标文件
-ldl
link dl
-Wl
如果linker是被间接调用(e.g. gcc),所有的linker options都由-Wl传入
-Wl,-soname
-Wl,-export-dynmaic
在linux可以用-rdynamic代替,当需要reverse dependencies时使用,即动态库需要程序加载它时才知道的符号时使用。
-rdynamic
即-Wl,-export-dynamic

分享

0