查看库文件:
ldd 可执行文件名字
库文件:
静态库:
libxxx.a
lib前缀, xxx是库文件,a是后缀
静态库制作:
使用ar(archive)工具,将.o文件打包。
ar -rcs libxxx.a xxx.o xxx.o
静态库的使用:
gcc -o test test.c -L.-lhello
test目标文件
test.c源文件
-L库所在的路径
-l后面是库的名称
动态库:(共享库)
libxxx.os
gcc -c -fPIC xxx.c xxx.c -Wall
-fPIC含义:生成与位置无关的代码。
gcc -shared -o libxxx.so xxx.o xxx.o
libxxx.so为动态库文件
编译并且链接共享库
gcc -o test test.c -L. -lxxx
gcc -o 可执行文件 源码文件 -L.路径 -l动态文件库的名字
路径错误解决:
由于加载动态库一般默认不是在当前路径下开始找的。默认是从系统目录库下开始找的。解决方案:
第一个解决方案:把这个库拷贝到usr/lib下 (不提倡)
第二种解决方案:使用环境变量,在LD_LIBRARY_PATH环境变量中添加库所在路径。export添加变量,在当前终端有效。在启动脚本加入变量,vi ~/bashrc, source ~/.bashrc,则在任何窗口有效。
第三种解决方案:添加到/etc/ld.so.conf.d/*.conf文件,执行ld config刷新。
1、预处理:头文件展开、宏替换、去注释、条件编译。
gcc -E hello.c -o hello.i
2、编译:生成汇编语言
gcc -S hello.i -o hello.s
3、汇编:将上一步生成的汇编语言 在这一步生成二进制程序
gcc -C hello.s -o hello.o
4、链接:把程序和库文件链接起来,链接完生成可执行文件a.out
gcc hello.o