g++常用编译选项小结
不加参数: gcc test.c 生成可执行文件 a.out
(默认生成可执行文件)
-o : 生成指定的文件名 (例子: gcc -o test test.c , 生成可执行文件 test )
-c : 生成目标文件 (例子: gcc -c test.c , 生成目标文件 test.o )
-c -o : 生成指定文件名的目标文件 (例子: gcc -c -o hello.o test.c , 生成目标文件 hello.o )
一条命令可以编译多个源文件生成目标文件:
gcc -c test1.c test2.c 将生成 test1.o test2.o
多个源文件编译成一个执行文件:
gcc -o test test1.c test2.c 将生成 test
先生成目标文件,再连接成可执行文件:
gcc -c test1.c test2.c 将生成 test1.o test2.o
gcc -o test test1.o test2.o 将生成 test
其他:
-E: 进行预编译
-S: 编译成汇编语言
-Wno-deprecated: 用于忽略头文件信赖的警告
打包成静态链接库:
ar -rcs libstr.a string.o –> 把string.o打包为库文件libstr.a
使用静态链接库:
gcc -o test main.c libstr.a
或者:
gcc -o test main.c -l str (str为库名,它不包含函数库lib和扩展名.a, -l链接的库名要在-o的目的名称之前)
显式指定链接函数库的路径: gcc -o test main.c -L ./ -l str (路径为当前目录)
动态链接库的使用跟静态链接库一样。