gcc编译命令

一、单文件编译

1、无选项自动编译链接

命令:gcc main.cpp

作用:将main.cpp预处理、汇编、编译并链接生成可执行文件。默认输出为a.out。

2、-o(小写)

命令:gcc main.cpp -o demo

作用:将main.cpp预处理、汇编、编译并链接生成可执行文件demo。-o选项用来指定输出文件的文件名。

3、-E

命令:gcc -E main.cpp -o main.i

作用:将main.cpp预处理输出main.i文件。

4、-S

命令:gcc -S main.i

作用:将预处理输出文件main.i汇编成main.s文件。

5、-c

命令:gcc -c main.s

作用:将汇编输出文件main.s编译输出main.o文件。

6、无选项链接

命令:gcc main.o -o demo

作用:将编译输出文件main.o链接生成最终可执行文件demo。

7、-O(大写)

命令:gcc -O1 main.cpp -o demo

作用:使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,编译时间越长。

二、多文件编译

1、多个文件一起编译

命令:gcc utils.cpp main.cpp -o demo

作用:将utils.cpp和main.cpp分别编译后链接成demo可执行文件。

2、分别编译各个源文件,之后对编译后输出的目标文件链接。

命令:

gcc -c utils.cpp                 //生成utils.o

gcc -c main.cpp              //生成main.o

gcc -o utils.o main.o -o demo              //将utils.o和main.o链接生成demo

三、外部库文件依赖链接编译

1、-I(大写)

命令:gcc -c -I /usr/dev/mysql/include main.cpp -o main.o

作用:包含mysql驱动库头文件目录,并编译生成目标文件main.o。

2、-L(大写),-l(小写)

命令:gcc -L /usr/dev/mysql/lib -lmysqlclient main.o -o demo

作用:通过-L指定依赖库目录,并通过-l指定具体依赖库名,链接生成可执行文件。

3、-static

命令:gcc -L /usr/dev/mysql/lib -static -lmysqlclient main.o -o demo

作用:强制链接是使用静态库链接库,如果在依赖库目录下同时存在libmysqlclient.so和libmysqlclient.a。

你可能感兴趣的:(开发工具,linux)