【总结】Linux下C开发,怎么做成库文件,又怎么引用这个库文件?

本文根据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看下那几个函数看下就知道了就不多说了

你可能感兴趣的:(linux)