【Linux公开课】创建静态库和共享库
发布时间:2022-10-24 12:51:28 所属栏目:Linux 来源:
导读: 摘要
静态库是.o文件的集合,这些.o文件是编译器按照常规方法生成的,在Linux下也称文档(archive),用ar工具来管理。下面以用两个c文件来创建静态库为例进行讲述。
文员也能看懂学通的《嵌入式
静态库是.o文件的集合,这些.o文件是编译器按照常规方法生成的,在Linux下也称文档(archive),用ar工具来管理。下面以用两个c文件来创建静态库为例进行讲述。
文员也能看懂学通的《嵌入式
摘要 静态库是.o文件的集合,这些.o文件是编译器按照常规方法生成的,在Linux下也称文档(archive),用ar工具来管理。下面以用两个c文件来创建静态库为例进行讲述。 文员也能看懂学通的《嵌入式Linux开发教程》正式开始免费连载啦!致远电子微信公众平台【独家首发】。在这个教程中,你看不到自我陶醉的炫技,内容通俗易懂,实用够用为先。本教程凝聚了ZLG致远电子嵌入式工程师的心血,转载请【注明出处】。 10.1.5创建静态库和共享库 1.创建静态库 静态库是.o文件的集合,这些.o文件是编译器按照常规方法生成的,在Linux下也称文档(archive),用ar工具来管理。 下面以用两个c文件来创建静态库为例进行讲述。在用户主目录下,创建一个libhelloa目录,并在其中创建hello1.c和hello2.c两个文件: 然后输入下列命令,将两个文件编译成目标文件: vmuser@Linux-host:libhelloa$ gcc -c hello1.c hello2.c 编译完成,将会得到hello1.o和hell2.o两个目标文件。 接着,用ar命令即可创建一个库文件。输入下列命令: vmuser@Linux-host:libhellloa$ ar -r libhello.a hello1.o hello2.o ar: creating libhello.a 这样,就得到了libhello.a库文件。按照前面介绍的用法进行使用即可。 2.创建共享库 共享库也是目标文件的集合,但这些文件是由编译器按照特殊方式生成的。对象模块的每个地址(函数调用和变量引用)都是相对地址,允许在运行时被动态加载和运行。 创建共享库首先需要编译对象模块。继续以hello1.c和hello2.c为例进行示范。在用户主目录下创建libhelloso目录,将前面两个.c文件复制到其中: 在终端输入下列命令,将两个c文件编译成一个目标文件: vmuser@Linux-host:libhelloso$ gcc -c -fpic hello1.c hello2.c 与创建静态库不同,这里加入了-fpic参数,表示生成的对象模块是可重定位的,pic表示位置独立代码(Position Independent Code)。 编译完成,得到了hell1.o和hello2.o两个文件,再用下列命令生成共享库: vmuser@Linux-host:libhelloso$ gcc -shared hello1.o hello2.o -o libhello.so 编译完成linux动态库,得到共享库文件libhello.so。 上面是分步进行介绍的,可以将两条命令合成一条命令,直接编译c文件得到.so共享库: vmuser@Linux-host:libhelloso$ gcc -fpic -shared hello1.c hello2.c -o libhello.so 生成了共享库后,按照前面介绍的用法进行使用即可。 10.1.6 arm-linux-gcc arm-linux-gcc是交叉编译器,基本用法与gcc相同。 在微信对话框中回复“Linux”就可以看到本书已推送过的所有章节,如果您看完有收获,请分享到朋友圈。 有任何关于Linux的话题,欢迎在微社区(电子圈)交流、讨论,点击阅读原文即可进入,或加入I.MX技术交流QQ群2:386055727。 MI1062六合一多功能组合仪器,集数字示波器、逻辑分析仪、协议分析仪、信号发生器、码型发生器和扫频仪六大功能于一身,小巧便携,信号测量精准入微,操作易用简捷,创国产组合仪器之先。MI1062多功能组合仪器再次让利!直降2820元!只要1980元!就是这么任性! 有任何疑问请直接在微信对话框中输入您的留言,小编非常乐意为您解答。 (编辑:开发网_新乡站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐