您的位置  > 互联网

Linux加速参数-pipe定义指定宏参数调试程序详细说明

[库文件参数-L(大写)、-l(小写)、-、-、-fPIC]选项将新目录添加到GCC的库文件搜索路径中。 例如,如果/home/yy/lib/目录下有一个需要链接的库文件.so,为了让GCC顺利找到它,可以使用命令:.c/home/yy/lib–lfoo 。 选项,指示GCC链接库文件.so。 Linux下库文件命名有一个约定,即以lib三个字母开头。 由于所有库文件都遵循相同的规范,因此在使用 -l 选项指定链接库文件的名称时可以省略它。 lib 三个字母,也就是说,当GCC处理-lfoo时,会自动链接名为.so的文件。 - 强制使用静态链接库的选项。 如果/home/yy/lib/目录下有链接需要的库文件...a. 为了使GCC在链接时只使用静态链接库,可以使用命令:.c/home/yy/lib--lfoo。 编译为动态库:g++-fPIC-..cpp-fPIC参数,表示编译成位置无关代码,用于编译共享库。

目标文件需要创建为与位置无关的代码,这从概念上讲意味着当可执行程序加载它们时,它们可以放置在可执行程序内存中的任何位置。 - 编译动态库时使用的参数。 【代码优化级别参数-O…(大写)】选项-O可以告诉GCC同时减少代码的长度和执行时间,其效果相当于-O1。 在此级别可以执行的优化类型取决于目标处理器,但通常包括线程jump()和延迟()优化。 选项-O2告诉GCC除了完成所有-O1级别的优化外,还需要进行一些额外的调整,例如处理器指令调度。 选项-O3除了完成所有-O2级别的优化外,还包括循环展开以及与处理器特性相关的其他优化。 一般来说,数字越大,优化级别越高,也意味着程序运行速度越快。 许多Linux程序员喜欢使用-O2选项,因为它在优化长度、编译时间和代码大小之间取得了理想的平衡。 可以使用命令:time./test来查看程序执行时间。 虽然优化可以给程序带来更好的执行性能,但是应该避免在以下情况下优化代码:开发程序时优化级别越高,编译所需的时间就越长,所以最好不要使用优化选项。 仅在软件发布或开发时才考虑优化最终生成的代码。 当资源有限时,某些优化选项会增加可执行代码的大小。 如果程序可以在运行时申请内存,如果资源非常紧张(比如一些实时嵌入式设备),那么就不要优化代码,因为这样带来的负面影响可能会产生非常严重的后果。

在跟踪和调试时,在优化代码时,可能会删除或重写某些代码,或者重新组织某些代码以获得更好的性能,这使得跟踪和调试变得异常困难。 因此应该避免优化。 【代码警告参数-W…(大写)、-w(小写)、-】-,使用扩展语法的地方,会生成相应的警告信息。 -Wall,用它让GCC生成尽可能多的警告消息。 –,要求 GCC 将所有警告视为错误。 –,无论是声明为还是指定了 -- 选项,如果函数无法内联,编译器都会发出警告。 如果您的代码包含许多函数,那么这是一个有用的选项。 -,当--decls中出现未定义的符号时,如果在同一可见范围内多次声明一个定义,即使这些重复的声明是有效的并且没有任何区别,编译器也会发出警告。 --code,如果编译器检测到永远不会执行的代码,则警告编译器。 这也是一个更有用的选择。 --,如果定义或调用返回结构体或联合体的函数,编译器会发出警告-Wcast-qual,当cast修饰符丢失时会给出警告。

-Wall 不会打开此项目。 --arith,对函数指针或void*类型的指针执行算术运算时发出警告。 另外 -Wall 不会打开此项目。 –、当一个局部变量覆盖另一个局部变量或全局变量时,给出警告。 非常有用的选项,我建议打开它。 -Wall 不会打开此项目。 –,打印一些额外的警告消息。 [生成汇编代码 - S(大写)] 要求编​​译器从源代码生成汇编程序输出。 例如:.s 将生成 test.s 汇编文件。 【预处理参数-E(大写)】进行预编译。 使用-E参数使GCC在预处理后停止编译过程。 例如:.i,生成test.i文件,并将预处理后的宏定义插入到test.i中; 而.c则直接在终端中输出预处理后的代码。 [仅编译文件参数-c(小写)] 仅编译文件并生成目标代码(.o)。 例如:.c 将生成 test.o。 【输出文件名参数-o(小写)】输出文件名设置,也可以将目标文件(.o)连接成可执行文件。 连接示例:..c。 【编译C++程序(*.cpp)参数–lstdc++】使用gcc编译C++程序,需要在gcc编译选项中添加“-lstdc++”,例如:gcc –lstdc++.cpp。

gcc之间的区别: (1)gcc和g++都是GNU(组织)的编译器。 (2) 后缀为.c 和.cpp 的程序g++ 将被视为c++ 源程序。 否则,gcc会将.c程序处理成c程序。 (3) 对于.cpp程序,可以使用gcc/g++进行编译,可以使用g++或gcc -lstdc++进行链接。 (我个人认为这是最重要的)。 【指定使用的编程语言 -x(小写)】 允许的语言包括:c ‘none’表示恢复默认行为,即根据文件扩展名猜测源文件的语言。 【编译加速-pipe】pipe参数使用管道来替换编译时的临时文件,例如:gcc -pipe foo.c foo。 [定义指定宏-D…(大写)] -Dname,预定义一个名为gcc-test.c test的名称。 -Dname=,预定义名称为name,值为【获取调试器的详细信息-g3】获取调试器的详细信息,不能与-o选项结合使用。