Linux动态链接库
··· Linux下动态链接库(.so)类比于windows下的dll,动态链接库特点是:不参与编译,只在程序运行时调用至内存。 注意:so一定要以lib开头,比如编译为:lib_xxxx.so,则调用时为:-l_xxxx(小写L,去掉lib头和so尾)1.1 创建so将./lib/src文件夹下的liba.clibb.c 文件编译成so:$ gcc a.cliba.clibb.c-fPIC-sh
·
··· 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
更多推荐
所有评论(0)
您需要登录才能发言
加载更多