利用gcc生成静态库和动态库
来源:互联网 发布:java处理并发问题 编辑:程序博客网 时间:2024/06/05 16:03
假设当前目录下有这些源文件:[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 。
【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 。
- [转]利用gcc生成静态库和动态库
- 利用gcc生成静态库和动态库
- 利用gcc生成静态库和动态库
- 利用gcc生成静态库和动态库
- gcc生成静态库和动态库
- GCC生成静态库和动态库
- GCC生成静态库和动态库
- GCC生成静态库和动态库
- gcc生成静态库和动态库
- gcc生成静态库和动态库
- gcc生成静态库和动态库
- gcc生成静态库和动态库
- gcc生成静态库和动态库
- gcc生成静态库和动态库
- gcc生成静态库和动态库
- gcc生成静态库和动态库
- gcc生成静态库和动态库
- gcc生成静态库和动态库
- 安装SQL SERVER 2005 时遇到的问题
- sapera
- document.all在firefox中不支持的解决办法
- 跟踪bug
- 原语和原子的定义
- 利用gcc生成静态库和动态库
- 前言
- 软件版本解析
- 转载js
- AJAX:带给开发者们崭新的一片天
- Windows NT 错误代码
- 大象--Thinking in UML早知道 -- 006 -- 非功能性需求
- JSP+servlet+javabean实现分页
- Hibernate的缓存机制