··· Linux下动态链接库(.so)
类比于windows下的dll,动态链接库特点是:不参与编译,只在程序运行时调用至内存。 注意:so一定要以lib开头,比如编译为:lib_xxxx.so,则调用时为:-l_xxxx(小写L,去掉lib头和so尾)
1.1 创建so
将./lib/src文件夹下的liba.c libb.c 文件编译成so:
$ gcc a.c liba.c libb.c -fPIC -shared -o lib_my.so
其中:-shared 指定生成动态链接库;-fPIC编译为位置独立的代码;


1.2 引用so
将test.c和so一起链接成文件test
$ gcc test.c -o main -L. -l_my
其中:-L指定搜索路径;-l_my表示引用lib_my.so。注意,链接指令一定要在.c文件之后出现!!
$ gcc -o test -L. -lmylib test.c #错误
$ gcc -o test -L. test.c -lmylib #正确


测试是否正确链接:

1.3 可能遇到的问题
找不到so文件
确定-L指定搜索.so路径,确定-I指定搜索.h文件路径,ldd查看不到链接,则需要export LD_LIBRARY_PATH。

$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your/path
本文详细介绍了Linux下动态链接库(.so)的创建方法,包括使用gcc编译生成so文件,并演示了如何在其他程序中正确引用so。还讨论了可能遇到的链接问题及解决方法,如设置LD_LIBRARY_PATH。
1125

被折叠的 条评论
为什么被折叠?



