gcc编译

GCC
1.新版本安装: configure make make install
2.Gcc编译过程:
预处理->文本文档 编译->汇编文件 汇编->目标文件 链接->可执行文件
gcc编译

3.具体过程:
预处理: 文本文档
文本文档中有:头文件包含、类型定义、函数的声明
gcc -E main.c -o main.i
编译:汇编文件
gcc -S main.i -o main.s
汇编:目标文件
gcc -c main.s -o main.o
-c只编译不链接,生成.o文件
链接:可执行文件
gcc main.o -o main
gcc编译

4.常见文件名后缀:
.out系统自己创建的,-o后应该自己制定名字,否则都是a.out
.i 文本文档
.s 汇编文件
.o 可执行文件
.a 静态库
.so动态库
库:函数库
静态库:编译时,函数放在main之前,占内存多
动态库:运行时,printf在98行,运行到96行时printf也不在内存中
5. Gcc编译器选项详解:
-g 获得有关调试程序的相关信息,必须加。后面有详细的
-Wall 告警信息提示,在编译时使用,建议使用
gcc编译
库依赖: gcc ……-I 路径(头文件放置的文件夹) -L .c生成的库文件的路径 -I(小写)库名
Find使用:管理员(用find来找那个头文件的路径)
gcc编译
API:查找函数在哪个库里面。!!!还是不会用!!
gcc编译
其中-l(小写)这部分有个简写?原来应该是 -libmysqlclient.so
代码优化: -O(大写)
gcc编译
调试:-g
Gdb时:
未加:(一定记好了!!)

gcc编译

加了之后:
会显示代码

生成静态库:三个语句

生成动态库

gcc编译

1.要把.h这个头文件来弄成动态库,所以只需要把它的.c 经过只编译-c 生成目标文件.o
2.再之后把这个目标文件来 生成动态库
3.利用库依赖来生成可执行文件
其中这里需要注意!需要把生成的动态库在管理员权限下复制到lib库里去,否则生成的可执行文件仍找不到头文件。
-L 是这个库所在的位置
-I 是之前这个库不在lib里,也没有复制到lib里,需要通过-I 来找到它的原来存在的位置。
总之,要想用动态库依赖成的可执行文件,都要把动态库放在lib里!!