您的位置:首页 > 其它

利用gcc生成静态库和动态库

2011-11-08 16:15 239 查看
假设当前目录下有这些源文件:[main.c func.c func.h],其中main.c要调用func.c中的函数。

【1】生成静态库:

$ gcc -c func.c -o func.o

$ ar rcs libfunc.a func.o

$ gcc main.c -o main -static -L. -lfunc

$ ./main

【2】生成动态库:

$ gcc -fPIC -c func.c -o func.o

$ gcc -shared -o libfunc.so.1.0.0 func.o

$ ln -s libfunc.so.1.0.0 libfunc.so

$ gcc main.c -o main -L. -lfunc

$ export LD_LIBRARY_PATH=$(pwd)

$ ./main

如果将so文件copy到系统lib目录(如/usr/lib),则最后2步就不用了。

最后还有3个小知识:

【1】nm命令:列出目标文件或2进制文件的所有符号。

【2】ldd命令:列出为了使程序正常运行所需要的所有共享库。

【3】/etc/ld.so.conf文件:除了标准目录(/lib和/usr/lib)之外,链接器和加载器搜索共享库时要检查的其他目录,和这个文件相关的一个命令是:ldconfig 。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: