【总结】Linux下C开发,怎么做成库文件,又怎么引用这个库文件?
本文根据http://topic.csdn.net/u/20091026/10/0e913e37-e4a2-4504-bcc7-61af18a22dde.html?6487的回复总结而成。 1. 共享库 通常做成共享库的话,在编绎时加上-shared参数,并把链接生成的文件名命名libxxx.so,可以放在/usr/lib下 其他程序引用这个库时,在链接的时候加上-lxxx就可以了
本文根据http://topic.csdn.net/u/20091026/10/0e913e37-e4a2-4504-bcc7-61af18a22dde.html?6487的回复总结而成。
1. 共享库
通常做成共享库的话,在编绎时加上-shared参数,并把链接生成的文件名命名libxxx.so,可以放在/usr/lib下
其他程序引用这个库时,在链接的时候加上-lxxx就可以了。
编辑好代码以后,编译时采用类似下面的命令可生成"共享库"(假如源文件是myfun.c):
gcc -shared -fPIC -Wmyfun.c -0 libmy.so
解释: -shared 生成共享库;
-fIPC 表示“位置无关代码”(Position Independent Code),可不加;
-W 表示输出警告信息,可不加;
库文件的命名要按照libxxxx.so的格式;
要引用这个库时:
gcc xxx.c -0 xxx.out -lmy
-l 表示设定要连接的库(libmy.so,输my便可)
2. 静态库
文件名:lib.c
先编译成目标文件 gcc -o mylib.o -c lib.c
然后创建静态库,将mylib.o放到libmylib.a中 ar rcs libmylib.a mylib.o
最后copy到库目录下/usr/lib cp libmylib.a /usr/lib/libmylib.a
在编写的时候直接调用其中的函数就是了,只不过在编译的时候要加入-l选项后面跟上库名
如 gcc -o test test.c -lmylib //mylib是前面创建的库的名称
3. 动态库
创建就是 gcc -fPIC -share -o mylib.so lib.c
调用也分两种方法
一种方法是 gcc -o test test.c ./libmylib.so (注意这里跟的是动态库的路径 )
第二种方法是使用动态库的函数 你man dlopen看下那几个函数看下就知道了就不多说了
更多推荐
所有评论(0)