GCC 学习记录
抽空学习了Linux GCC,以前都是搞visual c++和java开发,很少关注这块,只听说过make,cmake...
小布老师视频:https://www.bilibili.com/video/av82377250?p=5
编译过程:
步骤1:预处理(处理宏) Preprocessing(to expand macros)
步骤2:编译(源程序生成汇编语言) Complication(from source code to assembly)
步骤3:Assembly(汇编语言 到机器码) Assembly(from assembly language to machine code)
步骤4:链接(生成可执行文件) Linking(to create the final executable)
GCC编译Hello world
gcc -Wall hello.c main.c -o hello.o
参数说明:
-Wall: 使用标准的警告
-o: 目标文件输出
-v 打印详细信息
-c 只编译生成目标文件,即不链接 gcc -Wall -c main.c
-L 包含链接库文件路径
-I 指定头文件路径
-l 指定链接哪些库文件
-std指定C语言标准,如-std=c99
-D 宏定义。 对应indef宏定义,预处理使用
-E 只做预处理,不编译
-g 保存debug信息
-OLEVEL gcc编译优化等级0-3 等级越高会影响后续调试 建议平时用O0,发布时用O2
C_INCLUDE_PATH CPLUS_INCLUDE_PATH
LIBRARY_PATH 静态库路径
LD_LIBRARY_PATH 动态库路径
创建Library
告警设置:
辅助命令:
ldd : 查看当前文件依赖哪些动态库
file : 查看当前文件的类型
其他的一些工具,没记录了,很难用上,以后用了在看吧