GNU C语言开发环境(3)

  函数库可分为两种类型,静态库和共享库。函数库是由某些目标文件(.o)组成的,静态库命名为 libxxx.a,动态库常命名为 libxxx.so。编译器在链接阶段,会把静态库嵌入至可执行文件中,会把动态库的“快捷方式”存储到可执行文件中。


3.1.静态库

   静态库有 ar 工具创建。ar 命令语法如下:

$ ar [option] [tarfile] filelist

选 项功 能
-d   从库中删除对象  
-r   向库中插入对象(存在则替换)  
-t   显示库中对象列表  
-x   从库中提取对象  
-c   创建库  

  写两个c源程序,分别为一个函数,制作一个静态库。

[linuxidc.com@linuxidc lib]$ gcc -c -Wall *.c [linuxidc.com@linuxidc lib]$ ar -cr libmy.a *.o [linuxidc.com@linuxidc lib]$ ar -t libmy.a add.o count.o

  使用该静态库时,先定义静态库的应用接口

extern int add(int x, int y) extern int count(int * p);

  写一个主程序,调用刚刚生成的库 libmy.a 。

# 使用libmy.a,库名为my [linuxidc.com@linuxidc lib]$ gcc -Wall main.c -L. -lmy

 

3.2.动态库

  创建共享库(动态库),使用gcc命令创建。使用共享库,编译主程序。

[linuxidc.com@linuxidc lib]$ gcc -c add.c -fPIC // 编译共享库源程序须选项 -fPIC [linuxidc.com@linuxidc lib]$ gcc -c count.c -fPIC // 不加该选项,在链接时会报错 [linuxidc.com@linuxidc lib]$ gcc -shared add.o count.o -o libmy.so // 创建动态库 [linuxidc.com@linuxidc lib]$ gcc -Wall main.c -L/home/view/cpro -lmy -o main

 

4.GNU C 函数库(glibc)

  Linux系统中 glibc 常用库文件目录

头文件 /usr/include // 系统头文件 /usr/local/include // 本地头文件 函数库 /lib // 系统必备共享库 /usr/lib // 标准共享库和静态库 /usr/X11R6/lib // X11R6 的函数库 /usr/local/lib // 本地函数库 

  添加库,除了把库文件放到以上路径,还可以自定义路径

vi /etc/ld.so.conf.d/xxx.conf ldconfig

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/a6f063bb184b93720235c9cada5543ec.html