gcc基础
gcc
可以编译C、C++、Object C等语言编写的程序。
gcc的语法结构
gcc的基本语法
gcc [options] [filenames]
[options] 编译器所需要的编译选项
常用编译选项
-c:只是编译不链接,生成目标文件.o,制作库文件时,中间需生成.o文件
-S:只编译不汇编,生成汇编代码
-E:只进行预编译,不做其他处理
-g:调试信息
-o file:指定输出文件
-v:查看当前gcc的版本
-std=name:指定C语言的 标准(如c99等,标准越高要求越高,默认肯恩格式C89,C90)
-l dir:在头文件的搜索路径列表中添加dir目录
范例:
gcc -o obj/hello_word.o -c hello_word.c
obj/hello_word.o:目标文件
gcc -o bin/hello_word2 obj/hello_world.o
bin/hello_word2:可执行文件
gcc -std=c99 -o obj/hello_word.o -c hello_word.c
-std=c99:按照c99标准编译,必须放在-o之前
优化选项
-O:减少代码的长度和执行时间,效果等价于-O1,其中包括包含线程跳转和延迟推展
-O2:完成-O1内容外多来点,如处理器指令调度。常用选项。
-O3:.......
范例:
有个大循环optimize.c,通过不同优化编译选项,查看执行时间差别。
(time ./bin/optimize //查看执行时间)
gcc -o bin/optimize src/optimize.c //生成可执行文件,查看可执行时间为27s
gcc -O -o bin/optimize src/optimize.c //生成可执行文件,查看可执行时间为6s
gcc -O2 -o bin/optimize src/optimize.c //生成可执行文件,查看可执行时间为6s
gcc -O3 -o bin/optimize src/optimize.c //生成可执行文件,查看可执行时间为6s
警告和出错选项
-ansi:
-pedantic:
-pedantic-error:
-W:关闭告警
-Wall:允许发出gcc所提供的所有有用的报警信息。开发时候经常用到
范例:
hello_world.c删除return 0
gcc -Wall -o bin/hello_world src/hello_word.c
warning:control reaches end of non-void funtion 该文件有返回类型(void为无返回,non-void有返回),所以必须有return
注:gcc -o bin/hello_world src/hello_word.c 并不会报错,语法没有问题(' } '作为返回),只是语法不健壮,跨平台有可能会出现问题
选项制作库文件选项
-L dir:
-static:
-lname:
-shared: