如果指定此选项,将无法在所有系统上使用 gprof,并且如果同时指定此选项和 -g,则可能会出现调试问题。 -fbranch-target-load-optimize 在序言/结尾线程之前执行分支目标寄存器加载优化。 目标寄存器的使用通常只能在重新加载期间公开,因此将负载提升出循环并进行块间调度需要单独的优化过程。 -fbranch-target-load-optimiz...
gcc为我们提供了(-static)、(-Wl,-Bstatic)、(-Wl,-Bdynamic),这么几个选项。 第一种用法:使用-static选项,将全部动态库都用静态库替换。 这里有个基于boost库的程序,我们使用普通动态链接的方式编译出来,看看可执行程序的依赖关系。 由上图可见,可执行程序依赖于libboost_thread.so.1.72.0、libpthread.so.0...
g++ 可以将 C++ 源代码编译成可执行文件,或者生成汇编代码和目标文件。 gcc 和 g++ 的选项基本上都是一样的,我们这里就重点以gcc为例来进行讲解。 2. gcc 的使用 通过上面的了解我们知道gcc 和 g++ 其实就是Linux系统上的编译器。 编译器其实就是是一种将高级程序代码(如 C、C++、Java等)转换为低级机器代码...
gcc选项 -E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面 -S 编译到汇编语言不进行汇编和链接 -c 编译到目标代码 -o 文件输出到 文件 -static 此选项对生成的文件采用静态链接 -g 生成调试信息。GNU 调试器可利用该信息。 -shared 此选项将尽量使用动态库,所以生成文件比较小,...
-g表示可以调试,比如我们之前讲的gdb、valgrind,如果想要调试的时候显示源码、行号,编译的时候就需要加上-g选项。 gcc hello.c -o hello -g -O表示优化,可以是O0到O3,我们之前讲volatile的时候,就用过这个选项,不同的优化等级,对代码的处理略微有些区别。
-g 只是编译器,在编译的时候,产生调试信息。 -gstabs 此选项以 stabs 格式声称调试信息, 但是不包括 gdb 调试信息。 -gstabs+ 此选项以 stabs 格式声称调试信息, 并且包含仅供 gdb 使用的额外调试信息。 -ggdb 此选项将尽可能的生成 gdb 的可以使用的调试信息。
最常使用的是-g,一般可以满足需求。但是如果为了提升一些调试程序的性能,可以配合使用针对调试的优化选项-Og。 添加的调试信息可以使用strip工具移除,一般对于需要release的程序代码可以都通过此工具移除一些敏感信息,同时也能够减少目标文件的大小。 GCC的编译选项还有很多,对于常用的就是上面这一些,在开发阶段,最重要还是...
-g 产生符号调试工具(GNU的 gdb)所必要的符号信息。想要对源代码进行调试,就必须加入这个选项。 -O 对程序进行优化编译、链接。采用这个选项,整个源代码会在编译、链接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是编译、链接的速度就相应地要慢一些,而且对执行文件的调试会产生一定的影响,造成一...
选项中包含空白字符的话,可以用一个由单引号或双引号包围完整选项。任何字符(包括反斜杠: '/')均可能通过一个 '/' 前缀而包含在一个选项中。如果该文件本身包含额外的 @file选项,那么它将会被递归处理。结论 在这个系列的教程中,我们一共讲解了 5 个不常见但是很有用的 gcc 命令行选项:-Save-temps-g...