GCC编译选项

合集下载

GCC编译选项参数

GCC编译选项参数

GCC编译选项参数1. -o,指定输出文件的名称。

例如,gcc -o output main.c将生成一个名为output的可执行文件。

2.-c,只编译源文件但不链接生成可执行文件。

这个选项可以用于分离编译,将源代码和编译后的目标文件分开存放。

3.-g,生成包含调试信息的可执行文件。

这个选项可用于在程序出错时进行调试。

4. -Wall,显示所有警告信息。

这个选项用于尽可能多地检测潜在的错误。

5. -Werror,将警告视为错误。

这个选项会将所有警告信息转化为编译错误,编译过程中如果遇到任何警告就会停止编译。

6. -std,指定所使用的C或C++的标准版本。

例如,-std=c99指定使用C99标准。

7.-I,指定额外的头文件路径。

可以通过多次使用该选项来指定多个路径。

8.-L,指定额外的库文件路径。

可以通过多次使用该选项来指定多个路径。

9. -l,指定要链接的库文件。

例如,-lmath将链接数学库。

10.-O,指定优化级别。

有多个优化级别可选,从-O0(不进行任何优化)到-O3(进行最高级别的优化)。

11.-D,定义预处理宏。

可以使用-D定义宏并为其指定值。

例如,-DDEBUG定义一个名为DEBUG的宏。

12.-U,取消预定义宏的定义。

可以使用-U取消已定义的宏。

13.-E,只进行预处理,生成预处理后的源代码。

可以通过这个选项将预处理后的代码输出到标准输出或另一个文件中。

14.-S,只进行编译,生成汇编代码。

可以通过这个选项将汇编代码输出到标准输出或另一个文件中。

15. -shared,生成共享库文件。

这个选项可以用于生成可供其他程序调用的动态链接库。

16.-fPIC,生成位置无关的代码。

这个选项可以用于在共享库中使用。

17. -pthread,为多线程程序链接额外的线程库。

18. -march,指定目标处理器的架构。

例如,-march=armv7指定目标处理器是ARMv7架构。

19. -mfpu,指定使用的浮点单元类型。

gcc 编译指令

gcc 编译指令

gcc 编译指令
GCC(GNU Compiler Collection)是一个开源的编译器套件,用于编译和生成可执行文件。

它支持多种编程语言,如C、C++、Objective-C、Fortran等。

下面是一些常用的GCC编译指令:编译C源文件并生成可执行文件:
gcc source.c -o output
编译C++源文件并生成可执行文件:
g++ source.cpp -o output
指定编译优化级别(例如-O2):
gcc source.c -o output -O2
生成调试信息(用于调试程序):
gcc source.c -o output -g
链接其他库文件:
gcc source.c -o output -l library
指定包含头文件的目录:
gcc source.c -o output -I include_directory
生成位置无关代码(用于动态链接):
gcc source.c -o output -fPIC
生成静态库文件:
gcc -c source.c
ar rcs libname.a source.o
这些只是一些常用的GCC编译指令示例,GCC还支持更多的编译选项和功能。

你可以查阅GCC的官方文档或使用gcc --help命令获取更多的信息和使用方法。

gcc编译参数

gcc编译参数

gcc编译参数在GCC中,编译参数用于指定编译器的行为和选项。

这些参数可以对代码进行优化、生成调试信息、链接不同的库等等。

以下是一些常用的GCC编译参数:1.优化参数:--O0:不进行优化--O1:进行基本优化--O2:进行更多优化--O3:进行最大优化--Os:进行优化以缩小代码尺寸2.调试参数:--g:生成调试信息- -ggdb:生成GDB可用的调试信息- -gdwarf:生成DWARF调试信息3.警告参数:- -Wall:开启所有警告- -Werror:将所有警告视为错误- -Wextra:开启额外的警告- -Wno-unused-parameter:忽略未使用的函数参数的警告4.标准库参数:- -std=c89:使用C89标准- -std=c99:使用C99标准- -std=c11:使用C11标准- -std=c++98:使用C++98标准- -std=c++11:使用C++11标准- -std=c++14:使用C++14标准- -std=c++17:使用C++17标准5.预处理参数:- -D<symbol>=<value>:定义宏- -U<symbol>:取消宏定义- -I<dir>:指定头文件路径6.链接参数:- -L<dir>:指定库文件路径- -l<library>:链接库文件- -shared:生成共享库- -static:生成静态库7.其他参数:--c:只编译,不链接- -o <output>:指定输出文件名- -Wl,<option>:传递选项给链接器- -Wp,<option>:传递选项给预处理器这只是一小部分常用的GCC编译参数,GCC还提供了许多其他参数用于更精细地控制编译过程。

可以通过运行`gcc --help`命令查看GCC支持的所有编译参数。

简述gcc命令的选项

简述gcc命令的选项

简述gcc命令的选项gcc命令是一个常用的编译器命令,用于编译和链接C、C++等程序。

它有许多选项可以用来控制编译过程中的行为。

本文将简要介绍gcc 命令的一些常用选项。

1. -c选项:该选项用于编译源文件,生成目标文件,但不进行链接。

例如,gcc -c test.c会将test.c编译为test.o。

2. -o选项:该选项用于指定生成的可执行文件的名称。

例如,gcc -o test test.c会将test.c编译为名为test的可执行文件。

3. -g选项:该选项用于在生成的可执行文件中包含调试信息,以便于调试程序。

例如,gcc -g test.c会生成一个包含调试信息的可执行文件。

4. -Wall选项:该选项用于打开所有警告信息。

例如,gcc -Wall test.c会显示所有的警告信息。

5. -I选项:该选项用于指定头文件的搜索路径。

例如,gcc -I/usr/include test.c会在/usr/include目录中搜索头文件。

6. -L选项:该选项用于指定库文件的搜索路径。

例如,gcc -L/usr/lib test.c会在/usr/lib目录中搜索库文件。

7. -l选项:该选项用于指定需要链接的库文件。

例如,gcc -lmylib test.c会将名为libmylib.so或libmylib.a的库文件链接到可执行文件中。

8. -D选项:该选项用于定义预处理器宏。

例如,gcc -DDEBUG test.c 会定义一个名为DEBUG的宏。

9. -E选项:该选项用于只进行预处理,并将结果输出到标准输出。

例如,gcc -E test.c会将test.c进行预处理,并将结果输出到屏幕上。

10. -S选项:该选项用于只进行编译,并将结果输出为汇编代码。

例如,gcc -S test.c会将test.c编译为test.s。

11. -O选项:该选项用于指定优化级别。

例如,gcc -O2 test.c会进行优化级别为2的优化。

GCC常用的编译、链接选项

GCC常用的编译、链接选项

GCC常⽤的编译、链接选项GCC 的命令的权威解释还是要查询官⽅⽹站,同时⼀些链接选项不⽅便在⽹站上查询可以利⽤操作系统的 man 指令来查询(⽐如 man ld),这⾥记录⼀些常⽤选项,不定时更新。

1.最常⽤的选项: -o file 输出⽬标⽂件; -E 将源⽂件进⾏预处理;gcc -E test.c -o test.i -S 将源⽂件进⾏汇编处理;gcc -S test.c -o test.s -c 编译源⽂件;gcc -c test.c -o test.o 最终链接步骤:gcc test1.o test2.o test3.o -o test -Wall 打开所有的警告gcc -c test.c -Wall -o test -O打开优化选项: -O0 (默认)减少编译时间,⽣成 debug 级别的结果; -O1/O2/O3 优化级别逐级上升,⼀般 release 版本的优化等级都会采⽤ O2 级别;gcc -c test.c -O2 -o test -g ⽣成当前系统本地格式化的调试信息, GDB 可识别并调试; -ggdb 专门为 gdb ⽣成调试信息;gcc test.c -o test -ggdb test -shared ⽣成⼀个可执⾏⽂件可以动态链接的共享库,这是个链接选项,编译⽣成共享库的⽬标⽂件的源⽂件时通常需要添加编译选项 -fpic; -fpic ⽣成位置⽆关代码,在编译共享库的⽬标⽂件时使⽤,这是⼀个编译选项;gcc -c test.c -o test.o -fpicgcc -shared -o libtest.so test.o -I(⼤写 i) (-Idir 或者 -I dir)添加头⽂件搜索⽬录, 这是⼀个编译选项;test.c 包含 test.h, test.h 位于./inc 中gcc -c test.c -o test.o -I inc -l(⼩写L) (-llib 或者 -l lib)执⾏链接时的共享库名称,如当前有⼀个共享库 libcshare.so, 那么链接命令如下:gcc test.c -o test -lcshare 或gcc test.c -o test -l cshare 如果当前链接⽬录下同时存在相同名称的共享库和静态库,⽐如libcshare.so、libcshare.a,在不加任何选项的情况下,编译器优先选择链接共享库,除⾮添加-static; -L (-L dir)添加链接时共享库搜索⽬录;gcc test.c -o test -lcshare -L/xx/xx -std= 选择适配的 C/C++ 标准版本,可选的有 c89/c90/c99/c11 等;C++有c++98/c++11/c++14等等;2.其他常⽤选项; -M 为 GNU make 输出显式依赖规则,包含标准库头⽂件及系统头⽂件; -MM 类似于 -M, 但是只会包含当前⼯程的头⽂件依赖; -MF file 把依赖结果写⼊到 file;gcc -M test.c -Ixxx/xxxgcc -MM test.c -Ixxx/xxxgcc -MM test.c -Ixxx/xxx -MF test.d 然后查看依赖⽂件:cat test.dtest.o: test.c xxx/xxx/test.h 此外还有其他常⽤的链接选项: -Wl,-Bsymbolic 优先使⽤本地符号, 防⽌链接当前共享库的应⽤程序中的符号覆盖当前共享库中同名的符号; -Wl,-soname,libtest.so.1 设置共享库的 SONAME 为 libtest.so.1,readelf -d libtest.so 可以查看共享库的 SONAME; -Wl,-rpath=/xxx/xxx 设置运⾏时共享库搜索⽬录; -Wl,-rpath=. 设置运⾏时的共享库搜索⽬录优先选择当前⽬录; -Wl,--version-script=test.map 控制共享库的导出符号,符号表的形式为:VER_1 { global: test1; test2; test3; local: *;};VER_2 { global: test4;} VER_1; #依赖于版本1 如果只需要控制符号表,可以写成如下形式:{ global: test1; test2; test3; local:*;}; -Wl,--retain-symbols-file=test.sym 控制静态库的导出符号,test.sym 的格式如下test1test2test3 创建共享库时,添加以上链接选项可以同时控制静态库导出符号和共享库导出符号,如下所⽰:gcc test1.o test2.o test3.o test4.o -o libtest.so -shared -Wl,--version-script=test.map,--retain-symbols-file=test.sym3.另⼀种控制符号导出的⽅式 -fvisibility=[default|internal|hidden|protected] 如果要公开你的接⼝或者 API,那么就需要将 __attribute__ ((visibility ("xxxxxx"))) 放在你需要公开的结构、类或者函数声明中,然后在编译选项中增加 -fvisibility=xxxx(可选的项有 default、internal、hidden 和 protected)。

GCC编译选项和环境变量

GCC编译选项和环境变量

GCC编译选项和环境变量https:///DLUTXIE/article/details/8176164本⽂由GCC⼿册翻译得到,英语能⼒有限,翻译得不太好,仅为⾃⼰做记录,⽤于理解GCC编译时头⽂件及库⽂件的查找路径问题。

-Idir表⽰增加dir为头⽂件的搜索路径,这个路径优先于系统的默认路径,所以⽤⾃⼰指定的头⽂件来替代系统默认的头⽂件。

但是不要⽤这个选项来指定路径不要包括供应商提供的系统头⽂件(这个情况可以⽤-isystem),如果有多个-I选项,则路径的搜索先后顺序是从左到右的。

,即在前⾯的路径会被选搜索。

另外,如果dir以=号开头即如–I=dir,⽽其中的=号为被sysroot前缀替换。

如果⼀个标准系统包含的⽬录或者⽤-isystem选项指定的⽬录同时⽤了-I选项,则-I选项会被忽略。

那个⽬录仍然会被搜索,只是和没有指定-I选项时⼀样。

这是为了确保GCC程序能过够修复系统头⽂件的bug和⾮故意的改变include_next指令的顺序。

如果你确实需要改变系统路径的搜索顺序,那你可以⽤”-nostdinc” 和/或者“-isystem”选项。

-nostdinc该选项指⽰不要搜索头⽂件的标准路径(即默认路径),⽽只搜索-I选项指定的路径和当前路径。

-isysroot dir该选项和—sysroot选项差不多,但只⽤于搜索头⽂件。

--sysroot=dir⽤dir作为头⽂件和库⽂件的逻辑根⽬录,例如,正常情况下,如果编译器在/usr/include搜索头⽂件,在/usr/lib下搜索库⽂件,它将⽤dir/usr/include和dir/usr/lib替代原来的相应路径。

如果你同时使⽤了-isysroot选项,则—sysroot会应⽤于库⽂件的搜索⽽-isysroot会⽤于搜索头⽂件。

-system dir该选项⽤于搜索头⽂件,但该选项指定的⽬录估在-I选项指定的⽬录后搜索⽽在系统默认路径前搜索。

gcc基本命令

gcc基本命令

gcc基本命令一、引言GCC是一款广泛使用的编译器,它可以将高级语言编写的程序转换成机器语言,从而使得计算机能够运行这些程序。

本文将介绍GCC 的基本命令,包括编译、链接等操作。

二、编译源代码编译是将源代码转换成目标文件的过程。

GCC提供了多种编译选项,可以用来指定编译的方式和参数。

下面是一些常用的编译命令及其说明:1. gcc -c source.c -o object.o该命令将源代码文件source.c编译成目标文件object.o。

选项“-c”表示只编译,不进行链接操作。

选项“-o”用于指定输出文件的名称。

2. gcc -E source.c -o preprocessed.c该命令将预处理源代码文件source.c输出到preprocessed.c文件中。

选项“-E”表示只进行预处理操作,不进行编译和链接。

3. gcc -S source.c -o assembly.s该命令将源代码文件source.c编译成汇编代码文件assembly.s。

选项“-S”表示只生成汇编代码,不进行后续的编译和链接。

三、链接目标文件链接是将多个目标文件合并成可执行文件的过程。

GCC提供了多种链接选项,用于指定链接的方式和参数。

下面是一些常用的链接命令及其说明:1. gcc object1.o object2.o -o executable该命令将目标文件object1.o和object2.o链接成可执行文件executable。

选项“-o”用于指定输出文件的名称。

2. gcc object1.o object2.o -o executable -lm该命令将目标文件object1.o和object2.o链接成可执行文件executable,并且链接了数学库libm。

选项“-lm”用于指定链接的数学库。

四、其他常用命令除了编译和链接命令外,GCC还提供了其他一些常用的命令,用于查看版本信息、优化编译结果等。

gcc 编译命令

gcc 编译命令

gcc 编译命令GCC计算机科学中的重要概念,它的全称是GNU Compiler Collection,它是一种免费的开源编译器,可以用于将高级语言编写的源代码编译成机器语言,进而可以在程序运行。

GCC经成为当今最广泛使用的编译器,因为它有许多优点:它可以帮助开发人员编写优秀的代码,还支持多种语言,其中包括C、C++、Objective-C、Java Fortran。

这里介绍一些常用的 GCC译命令。

首先,最基本的是 gcc令,这一命令能够帮助用户编译源代码文件,并输出可执行文件。

例如,如果要编译 hello.c,可以使用以下命令:gcc hello.c -o hello此外,还有一个函数:gcc -c,它可以将源文件编译成目标文件(.o文件),而不创建可执行文件。

此外,GCC提供了一些其他的命令,可以用来优化源代码的编译效率,以及检查可执行文件的潜在错误,这些命令包括:1. gcc -Wall项:这个选项可以显示编译器产生的所有警告信息,帮助开发人员快速发现程序中的问题。

2. gcc -O项:设置优化等级,可以提高可执行文件的执行效率。

3. gcc -W项:这个选项可以检查程序中的错误,并输出可用来调试程序的相关信息。

4. gcc -S项:这个选项可以将编译好的汇编语言代码保存为文件,这有助于开发人员仔细检查所有程序文件。

以上就是 GCC译命令的基本信息。

它们一般通常在编写高级语言代码时使用,使开发人员可以将其编译为机器语言,便于程序的执行。

GCC译命令的优点之一是它们支持多种语言,这样可以让开发人员使用多种编程语言进行开发,同时还提供了一些有助于检查程序正确性的功能。

另外,GCC提供了优化等级和警告信息显示的功能,从而可以提高程序的执行效率,并减少出现错误的概率。

因此,GCC译命令不仅支持多种语言,而且具备许多实用的特性,可以为程序开发者带来更大的便利性和效率。

未来,GCC译命令将会有更多的发展,以满足开发者更高的要求。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Linux中gcc,g++常用编译选项-x language filename设定文件所使用的语言,使后缀名无效,对以后的多个有效.也就是根据约定,C语言的后缀名称是.c的,而C++的后缀名是.C或者.cpp,如果你很个性,决定你的C代码文件的后缀名是. pig 哈哈,那你就要用这个参数,这个参数对他后面的文件名都起作用,除非到了下一个参数的使用。

可以使用的参数有下面的这些:`c', `objective-c', `c-header', `c++', `cpp-output', `assembler', and `assembler-with-cpp'.看到英文,应该可以理解的。

例子用法: cd..gcc -x c hello.pig-x none filename关掉上一个选项,也就是让gcc根据文件名后缀,自动识别文件类型例子用法:gcc -x c hello.pig -x none hello2.c-c只激活预处理,编译,和汇编,也就是他只把程序做成obj文件例子用法:gcc -c hello.c他将生成.o的obj文件-S只激活预处理和编译,就是指把文件编译成为汇编代码。

例子用法gcc -S hello.c他将生成.s的汇编代码,你可以用文本编辑器察看-E只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面.例子用法:gcc -E hello.c > pianoapan.txtgcc -E hello.c | more慢慢看吧,一个hello word 也要预处理成800行的代码-o制定目标名称,缺省的时候,gcc 编译出来的文件是a.out,很难听,如果你和我有同感,改掉它,哈哈例子用法gcc -o hello.exe hello.c (哦,windows用习惯了)gcc -o hello.asm -S hello.c-pipe使用管道代替编译中临时文件,在使用非gnu汇编工具的时候,可能有些问题gcc -pipe -o hello.exe hello.c-ansi关闭gnu c中与ansi c不兼容的特性,激活ansi c的专有特性(包括禁止一些asm inline typeof 关键字,以及UNIX,vax等预处理宏/* 注释中的不常用****************************************************-fno-asm此选项实现ansi选项的功能的一部分,它禁止将asm,inline和typeof用作关键字。

-fno-strict-prototype只对g++起作用,使用这个选项,g++将对不带参数的函数,都认为是没有显式的对参数的个数和类型说明,而不是没有参数.而gcc无论是否使用这个参数,都将对没有带参数的函数,认为没有显式说明的类型-fthis-is-varialble就是向传统c++看齐,可以使用this当一般变量使用.-fcond-mismatch允许条件表达式的第二和第三参数类型不匹配,表达式的值将为void类型-funsigned-char-fno-signed-char-fsigned-char-fno-unsigned-char这四个参数是对char类型进行设置,决定将char类型设置成unsigned char(前两个参数)或者signed char(后两个参数)*注释完成*********************************************/-include file包含某个代码,简单来说,就是便于某个文件需要另一个文件的时候,就可以用它设定,功能就相当于在代码中使用#include<filename>例子用法:gcc hello.c -include /root/pianopan.h-imacros file将file文件的宏,扩展到gcc/g++的输入文件,宏定义本身并不出现在输入文件中-Dmacro相当于C语言中的#define macro-Dmacro=defn相当于C语言中的#define macro=defn-Umacro相当于C语言中的#undef macro-undef取消对任何非标准宏的定义-Idir在你是用#i nclude"file"的时候,gcc/g++会先在当前目录查找你所制定的头文件,如果没有找到,他回到缺省的头文件目录找,如果使用-I制定了目录,他回先在你所制定的目录查找,然后再按常规的顺序去找.对于#i nclude<file>,gcc/g++会到-I制定的目录查找,查找不到,然后将到系统的缺省的头文件目录查找-I-就是取消前一个参数的功能,所以一般在-Idir之后使用-idirafter dir在-I的目录里面查找失败,讲到这个目录里面查找.-iprefix prefix-iwithprefix dir一般一起使用,当-I的目录查找失败,会到prefix+dir下查找-nostdinc使编译器不再系统缺省的头文件目录里面找头文件,一般和-I联合使用,明确限定头文件的位置-nostdin C++规定不在g++指定的标准路经中搜索,但仍在其他路径中搜索,.此选项在创libg++库使用-C在预处理的时候,不删除注释信息,一般和-E使用,有时候分析程序,用这个很方便的-M生成文件关联的信息。

包含目标文件所依赖的所有源代码你可以用gcc -M hello.c 来测试一下,很简单。

-MM和上面的那个一样,但是它将忽略由#include<file>造成的依赖关系。

-MD和-M相同,但是输出将导入到.d的文件里面-MMD和-MM相同,但是输出将导入到.d的文件里面-Wa,option此选项传递option给汇编程序;如果option中间有逗号,就将option分成多个选项,然后传递给会汇编程序-Wl.option此选项传递option给连接程序;如果option中间有逗号,就将option分成多个选项,然后传递给会连接程序.-llibrary制定编译的时候使用的库例子用法gcc -lcurses hello.c使用ncurses库编译程序-Ldir制定编译的时候,搜索库的路径。

比如你自己的库,可以用它制定目录,不然编译器将只在标准库的目录找。

这个dir就是目录的名称。

-O0-O1-O2-O3编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高-g只是编译器,在编译的时候,产生调试信息。

-gstabs此选项以stabs格式声称调试信息,但是不包括gdb调试信息.-gstabs+此选项以stabs格式声称调试信息,并且包含仅供gdb使用的额外调试信息.-ggdb此选项将尽可能的生成gdb的可以使用的调试信息.-static此选项将禁止使用动态库,所以,编译出来的东西,一般都很大,也不需要什么动态连接库,就可以运行.-share此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库.-traditional试图让编译器支持传统的C语言特性下面简单的运用:我们在文本编辑器里写一个C的简单的程序(好像所有学习C或者C++的书都会出现)代码:#include <stdio.h>int main(){printf("Hello,World!\n");return 0;}现在存盘为Hello.c,打开你的终端,并在文件当前目录输入:gcc Hello.c -o hello编译时可能会出现如下警告:no newline at and of file ,只有在文件结尾添加一个新行就好了。

然后在终端中输入./hello ,你就能在终端中看到程序运行结果了。

下面来说下C++是如何编译的代码:#include <iostream>using namespace std;int main(){cout<<"Hello,World!\n"<<endl;return 0;}存盘为Hello.cpp使用gcc编译???不对,这里我们使用g++来编译C++程序g++ Hello.cpp -o hello编译多个文件我们怎么办???来看下面出了三个文件Hello.h, Hello.cpp, MyFirst.cpp代码://file_NO1:Hello.hclass Hello{public:Hello();void Display();};//file_NO2:Hello.cpp#include <iostream>#include "Hello.h"using namespace std;Hello::Hello(){}void Hello::Display(){cout<<"Hello,World!\n"<<endl;}//file_NO3:MyFirst.cpp#include <iostram>#include "Hello.cpp"int main(){Hello theHello;theHello.Display();return 0;}在g++中有一个参数-c 可以只编译不连接,那么我们就可以按如下顺序编译文件,代码:g++ -c Hello.cpp -o Hello.og++ -c MyFirst.cpp -o MyFirst.og++ MyFirst.o hello.o -o MyFirst你是否会问,如果是一个项目的话,可能会有上百个文件,这样的编译法,人不是要累死在电脑前吗,或者等到你编译成功了,岂不是头发都白了,呵呵,所以我们要把上述的编译过程写进以下一个文本文件中:Linux下称之为makefile#这里可以写一些文件的说明MyFirst: MyFirst.o hello.og++ MyFirst.o hello.o -o MyFirstHello.o:Hello.cppg++ -c Hello.cpp -o Hello.oMyFirst.o:MyFirst.cppg++ -c MyFirst.cpp -o MyFirst.omakefile 编写规则:(1)以“#”开始的行为注释(2)文件依赖关系为:target:componentsrule存盘为MyFirst,在终端输入:make MyFist ,程序出现了错误可是所有程序员共同的敌人,在编写程序时我们应该尽量的去避免错误的出现,不过编写的时候再怎么都不可避免的出现这样那样的错误,对程序进行必要的调试是一个好主意,那我们怎么来调试程序呢,看下面:gdb ./文件名////////////////在这里我修改下要想下面可以调试,在上面编译的时候必须加上参数g,g++ -g hello.cpp -o hello以下为调试状态下的可以用到的命令(可以仅输入单词的输入,如break可简为b),尖括号中为说明list <显示源代码>break 行号<设置断点>run <运行程序>continue <继续从断点处执行>print 变量<调试时查看变量的值>del 行号<删除断点>step <单步执行,可跟踪到函数内部>next <单步执行,不可跟踪到函数内部>quit <退出>makefile 的编写不是件容易的事情,因为自己写的makefile可能不能在所有的unix/linux类操作系统下通用。

相关文档
最新文档