嵌入式 Linux C ARM Linux学习之路C语言

如何制作静、动态库

2019-01-19  本文已影响2人  Leon_Geo

一、静态库的制作

1、基本概念

2、命令格式

制库

ar-crlibxxx.axxx1.oxxx2.oxxx3.o...

一般我们使用"ar"工具维护和管理静态库。
ar的三个参数中:

lib和.a都是系统指定的静态库文件的固定格式,mylib才是静态库的名称。

用库

    gcc-omainmain.c-static-L.–lmylib

编译时,链接器会在标准路径(/usr/lib;/lib)或者用户指定的路径下去找.a的文件。

总结:
使用静态库可以使程序不依赖于任何其他库而独立运行,但是会占用很多内存空间以及磁盘空间,而且如果库文件更新,则需重新编译源代码,使用起来不够灵活.其实,编译的时候不需要加-static,直接用gcc-omainmain.c-L.–lmylib,连接器会为我们链接指定的静态库以及标准C的共享库。

======================================

二、动态库的制作

1、基本概念

动态库并不包含在可执行文件中,而是在执行时才加载动态库。

2、命令格式

制作gcc-shared-fPICxxx.c-olibxxx.so

--fPIC:表示编译为位置独立的代码,不用此选项的话编译后的代码是位置相关的所以动态载入时是通过代码拷贝的方式来满足不同进程的需要,而不能达到真正代码段共享的目的。

--L.:表示要连接的库在当前目录中

当然如果有root权限的话,可以修改/etc/ld.so.conf文件,然后调用/sbin/ldconfig来达到同样的目的,不过如果没有root权限,那么只能采用输出LD_LIBRARY_PATH的方法了。

编译gccmain.c-lxxx[-L编译时库路径]

--L临时指定运行时的库查找路径,如果不指定则在标准路径下找

--l当你发布库要标准路径“/usr/lib或/lib”就不需要其它操作,但gcc时一定要加“-l”指定的库名

上一篇下一篇

猜你喜欢

热点阅读