1. gcc工作流程
1. 预处理 gcc -E
2. 编译 gcc -S
3. 汇编 gcc -c
4. 链接 没参数
2.常用参数
-o: 指定生成的文件的名字
-D: 在编译的时候定义宏(控制log的输出)
-I: 指定头文件的路径
-g: gdb调试的时候需要添加该参数
-O: 编译优化, 3个等级 -O(1-3)
-Wall: 编译期间输出警告信息
3. 制作静态库
1. 命名规则: lib静态库名字.a
2. 制作步骤:
1). 生成二进制代码文件.o
gcc -c *.c
2). 打包(将所有的.o文件)生成.a静态库文件
ar rcs 静态库的名字 *.o
3). 使用: (-L+库文件所在路径 -l+库名字 -I+头文件目录)
gcc test.c -LlibPath -llibname -o test.out -Iinclude_dir
4. 制作动态库
1). 动态库后缀: .so -- lib动态库名字.so
2). 制作步骤:
1). 生成与位置无关的代码(.o)
gcc -fPIC -c *.c -Iinclude_dir
2). 将.o打包生成.so文件
gcc -shared *.o -o libmytest.so
3). 使用(-L+库文件所在路径 -l+库名字 -I+头文件目录)
gcc test.c -L./lib -lmytest -I./inlude -o test.out
4).应用程序不能执行, 动态链接器连接不到自己制作的库
1>. 临时设置的方法:
export LD_LIARARY_PATH=库文件所在目录
2.> 永久设置的方法:
1. 找到动态链接器的配置文件: /etc/ld.so.conf
2. 在该文件中添加动态库的目录(绝对路径)
3. 更新: sudo ldconfig -v