GCC编译器常用选项
- 生成动态链接库:
gcc file.c -fPIC -o file.so
, PIC表示Position-Independent Code: 独立地址代码
- 编译:
gcc -c file.c
, c表示: compile(编译)
- 只预处理:
gcc -E file.c
- 生成汇编代码:
gcc -S file.c
- 生成可执行文件:
gcc file.c -o app
- 生成调试信息:
gcc -g file.c
, 之后可以使用gdb进行调试, g表示generate(生成), 但是只有在发布app时, 使用strip app去掉调试信息
- 显示所有警告:
gcc -Wall file.c
, Wall表示: Warn all
- Werror: 将所有的警告视为错误
- w: 禁止显示警告
- 显示编译的详细信息:
gcc -v file.c
- 指定库所在的目录:
gcc -L/paht/to/youlibdir/ file.c
, 注意: -L后边紧跟的就是含有执行lib文件的目录, 没有空格
- 指定库:
gcc -l/path/to/youlib file.c
, 注意: 小写的l跟L用法一样, 只是后边跟的是文件的路径
- 指定头文件的目录: 使用-I
- 指定头文件: 使用-l, 小写的L, 与上面的l不同, 该l后面要有空格
- 其中的
-I, -L, -l
在命令中可以出现多次, 那-I为例, gcc -I/usr/include/ -I/usr/local/include -I./someheadersdir file.c
- 指定需要编译的文件的语言:
gcc -x C file.c
- gcc的代码优化:
gcc -O1 file.c
gcc -O2 file.c
gcc -O3 file.c
-O后面跟的数字表示优化的程度, 3表示最高的优化, 但是编译的时间变长了
如果跟0表示不做任何优化
GCC和AR(Archive)配合生成静态链接库
- 使用gcc编译生成.o文件
- 使用ar生成静态链接库
gcc -c file.c --> create file.o
ar rcv my.a file.o
- 关于ar的选项
c: Create, 生成归档(.a)
r: Replace, 如果归档中已经有了一个同名的.o文件, 替换掉
v: verbose, 显示ar创建链接库的信息