Linux 库 创建自己的静…
2014-07-02 08:20
183 查看
库:一组实现好的函数接口
Linux 库: 静态库 和 动态库
一.gcc的特性
1.默认搜索库的路径 /usr/lib 和 /lib
2.默认搜索头文件的路径 /usr/include
------------------------------------------
1.指定gcc搜索库的路径: -L 库的路径
注意:gcc默认在链接库的时候只能认识自带的库,第三库不能识别,如果想识别第三库需要加
-l库名
来指定链接的库
2.指定gcc头文件的搜索路径: -I 库的路径
二. 静态库
静态库命名 : libname.a ,其中库名字是name
注意:链接静态库的时候,会把对应函数的实现代码也链接到程序中,生成可执行文件体积大,
程序运行的时候不需要库的支持
(1)制作静态库
1.将.c文件变成.o
gcc -c file.c -o file.o
2.将.o文件变成库
ar -cr libname.a *.o
三.动态库
动态库命名 : libname.so,其中库名字是name
注意:链接动态库的时候,不会将对应函数的实现代码链接到程序中,只记录这个程序所依赖库的名字,
生成可执行文件体积小,程序运行的时候需要库的支持
(1)察看可执行所依赖的库
readelf -a 可执行文件 | grep "Shared"
(2)制作动态库
1.将.c文件变成.o
gcc -c -fpic file.c -o
file.o
-fpic 生成地址无关的指令
2.将.o文件变成库
gcc -shared *.o -o
libname.so
(3)OS加载库搜索的路径
1.在LD_LIBRARY_PATH环境变量下搜索
添加环境变量:export
LD_LIBRARY_PATH=路径1:路径2:...:$LD_LIBRARY_PATH
永久添加:/etc/profile 或 /etc/bash.bashrc
2.在/etc/ld.so.cache文件中搜索
a.在/etc/ld.so.conf.d目录下新建配置文件,添加库所在的路径
b.ldconfig命令生效添加的路径
3.在/lib 或 /usr/lib 目录搜索
四 动态库和静态库同时存在
如果动态库和静态库同时存在,gcc默认链接动态库,如果想让gcc去链接静态库需要加-static参数
Linux 库: 静态库 和 动态库
一.gcc的特性
1.默认搜索库的路径 /usr/lib 和 /lib
2.默认搜索头文件的路径 /usr/include
------------------------------------------
1.指定gcc搜索库的路径: -L 库的路径
注意:gcc默认在链接库的时候只能认识自带的库,第三库不能识别,如果想识别第三库需要加
-l库名
来指定链接的库
2.指定gcc头文件的搜索路径: -I 库的路径
二. 静态库
静态库命名 : libname.a ,其中库名字是name
注意:链接静态库的时候,会把对应函数的实现代码也链接到程序中,生成可执行文件体积大,
程序运行的时候不需要库的支持
(1)制作静态库
1.将.c文件变成.o
gcc -c file.c -o file.o
2.将.o文件变成库
ar -cr libname.a *.o
三.动态库
动态库命名 : libname.so,其中库名字是name
注意:链接动态库的时候,不会将对应函数的实现代码链接到程序中,只记录这个程序所依赖库的名字,
生成可执行文件体积小,程序运行的时候需要库的支持
(1)察看可执行所依赖的库
readelf -a 可执行文件 | grep "Shared"
(2)制作动态库
1.将.c文件变成.o
gcc -c -fpic file.c -o
file.o
-fpic 生成地址无关的指令
2.将.o文件变成库
gcc -shared *.o -o
libname.so
(3)OS加载库搜索的路径
1.在LD_LIBRARY_PATH环境变量下搜索
添加环境变量:export
LD_LIBRARY_PATH=路径1:路径2:...:$LD_LIBRARY_PATH
永久添加:/etc/profile 或 /etc/bash.bashrc
2.在/etc/ld.so.cache文件中搜索
a.在/etc/ld.so.conf.d目录下新建配置文件,添加库所在的路径
b.ldconfig命令生效添加的路径
3.在/lib 或 /usr/lib 目录搜索
四 动态库和静态库同时存在
如果动态库和静态库同时存在,gcc默认链接动态库,如果想让gcc去链接静态库需要加-static参数
相关文章推荐
- linux 创建连接命令 ln -s 软链接
- linux下创建管理员组 使用 su - 命令
- Linux C 创建目录函数mkdir相关
- 【转载】Linux core 文件介绍
- Linux 创建多进程 & 线程时的进程栈段处理
- Linux 开机自启动自己创建的服务的方法
- 如何创建自己的Linux发行版
- 【转】linux shell awk获得外部变…
- Windows下创建PXE网络安装Linux
- linux软件包安装自己创建yum源的方法
- <<探讨linux/unix>>之创建文件
- JavaScript Tip/Trick: 动态创建Table时,在IE中需要注意的一个问题
- <转载自IBM>在Linux上创建ISO和刻录CD(mkisofs&cdrecord)
- Linux中一步一步教你创建自己的C库
- [Linux]RedHat创建新用户的时候没有产生".bash_profile"
- 基于嵌入式Linux的MPC850&nbspUSB 驱动程序的实现
- 收集整理的Linux下的小技巧(四) - 在Ubuntu创建自己的开发环境
- linux 每日学一点《如何创建自己的Linux发行版》
- 在Linux下如何创建自己的函数库