| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> Linux库文件 -> 正文阅读 |
|
[系统运维]Linux库文件 |
一、库类型 动态函数库: .a后缀 静态函数库: .so后缀 二、使用链接器链接库 1.Linux标准库路径:/lib:/usr/lib 但是,在默认情况下,C链接程序只会在Linux标准库路径下搜索标准C语言库。所以,对于开发者而言,仅仅将非标准C语言库文件放在标准目录中,就希望编译器能够找到它是不够的,库文件必须遵循特定的命名规范并且需要在命令行中明确指定。 2.库文件命名规范 lib + 库名 + .a/.so 3.命令行指定要链接的库,使用示例如下: (1)指定链接Linux标准库路径下的非标准C语言库(这种情况下,库路径已知,可省略) gcc ?-o ?fred.exe ?fred.c ?/usr/lib/libm.a //指定链接静态库 gcc ?-o ?fred.exe ?fred.c ?-lm //优先链接动态库 (2)指定链接非Linux标准库路径下的非标准C语言库 gcc ?-o ?x11fred ?x11fred.c ?/usr/openwin/lib/libX11.so //指定链接动态库 gcc ?-o ?x11fred ?-L/usr/openwin/lib ?x11fred.c ?-lX11 //有限链接动态库 总结:对于Linux标准库路径下的库,我们只需要用-l或者库路径来指明要链接的库;对于非Linux标准库路径下的库,我们需要用-L指明库所在目录,并用-l或者库路径来指明要链接的库。对于用-l或者库路径的区别——-l让链接器优先选择链接同名动态库,库路径使得链接器直接链接库路径指定的库。 三、构建自己的静态库 目标:将bill.c和fred.c打包成一个.a库 工具:ar 步骤: gcc ?-c ?bill.c ?fred.c //编译不链接,创建bill.o ?fred.o ar ?-crv ?libfoo.a ?bill.o ?fred.o randlib ?libfoo.a //为库函数生成一个内容表,Linux下非必须 四、构建自己的动态库 目标:将bill.c和fred.c打包成一个.a库 工具:ar 步骤: gcc ?-c ?bill.c ?fred.c //编译不链接,创建bill.o ?fred.o gcc ?-shared ?-o ?libfoo.so ?bill.o ?fred.o 五、编译链接并运行链接到动态链接库的程序 1.gcc -o program program.cpp -L. -lfoo 2.将libfoo.so路径添加到LD_LIBRARY_PATH环境变量,使得program运行时能正确加载到 3. ./program 六、查看可执行程序依赖的动态库 ldd ?program ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 11:37:11- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |