安藏理工大学 2.4gcc的基本用法和选项 >gcc的一般用法为: gcc [options]<filenames> >其常用格式为: gcc[-c][-S][-E[-s][-g] [-static][-shared][-rdynamic] [-ldir ...][-Ldir...][-Imylib][-Olevel] [-x Language][-Dmacro[=defn]...] [-Umacro][-mmachine-option ... [-o out_file]infile... 18
18 2.4 gcc的基本用法和选项 ➢ gcc的一般用法为: gcc [options] <filenames> ➢ 其常用格式为: gcc [-c][-S][-E][-s][-g] [-static][-shared][-rdynamic] [-Idir …][-Ldir …][-lmylib] [-Olevel] [-x Language] [-Dmacro[=defn] …] [-Umacro][-mmachine-option …] [-o out_file] infile …
安藏理工大学 ANHUI UNIVERSITY OF SCIENCE TECHNOLOGY >-c:编译后仅输出*.o型的目标文件,而不连接生成可执 行程序 >S:编译后仅生成汇编语言文件*.s,但不生成目标文件 和可执行代码 >S:生成可执行文件时,删除符号表和重定位信息。生成 成品软件时使用 >-E:在预处理过程后结束,不进行编译和连接,也不生成 可执行代码 >g:在可执行文件中加入调试信息,便于程序的调试 19
19 ➢ -c:编译后仅输出*.o型的目标文件,而不连接生成可执 行程序 ➢ -S:编译后仅生成汇编语言文件*.s,但不生成目标文件 和可执行代码 ➢ -s:生成可执行文件时,删除符号表和重定位信息。生成 成品软件时使用 ➢ -E:在预处理过程后结束,不进行编译和连接,也不生成 可执行代码 ➢ -g:在可执行文件中加入调试信息,便于程序的调试
安藏理工大学 ANHUI UNIVERSITY OF SCIENCE TECHNOLOGY >-o outfile:指定输出文件名。若不指定则生成a.out >ldir:将目录dir添加到头文件搜索范围 >-Imylib:连接时搜索库libmylib.a e.g.$gcc test.c-ltest-o test4 则搜索libtest.a库进行连接 >Ldir:将目录dir添加到库文件搜索范围 >-OL:编译时进行优化。L为优化级别,分别0~3和s。 生成最终产品时使用 >static:禁止使用共享库(动态连接库) >shared:生成共享库 >-rdynamic:连接时使用共享库 20
20 ➢ -o outfile:指定输出文件名。若不指定则生成a.out ➢ -Idir:将目录dir添加到头文件搜索范围 ➢ -lmylib:连接时搜索库libmylib.a e.g. $gcc test.c –ltest –o test4 则搜索libtest.a库进行连接 ➢ -Ldir:将目录dir添加到库文件搜索范围 ➢ -O[L]:编译时进行优化。L为优化级别,分别0~3和s。 生成最终产品时使用 ➢ -static:禁止使用共享库(动态连接库) ➢ -shared:生成共享库 ➢ -rdynamic:连接时使用共享库
安藏理工大学 ANHUI UNIVERSITY OF SCIENCE TECHNOLOGY 程序示例 1.C程序 设有一个文件名为nello..c的程序,其内容为: #include〈stdio.h> main() printf ("Hello World!\n"); } 21
21 程序示例 1. C程序 设有一个文件名为hello.c的程序,其内容为: #include <stdio.h> main() { printf(“Hello World!\n”); }
安藏理工大学 ANHUI UNIVERSITY OF SCIENCE TECHNOLOGY 编译和执行步骤 >编译 gcc hello.c #生成可执行程序a.out,或 √gcc-o hello hello.c#生成可执行程序hello >运行 √.la.out 或 √.hello >输出结果 Hello World! 22
22 编译和执行步骤 ➢ 编译 ✓ gcc hello.c #生成可执行程序a.out,或 ✓gcc –o hello hello.c #生成可执行程序hello ➢ 运行 ✓ ./a.out 或 ✓ ./hello ➢ 输出结果 Hello World!