gcc为我们提供了(-static)、(-Wl,-Bstatic)、(-Wl,-Bdynamic),这么几个选项。 第一种用法:使用-static选项,将全部动态库都用静态库替换。 这里有个基于boost库的程序,我们使用普通动态链接的方式编译出来,看看可执行程序的依赖关系。 由上图可见,可执行程序依赖于libboost_thread.so.1.72.0、libpthread.so.0...
如果指定此选项,将无法在所有系统上使用 gprof,并且如果同时指定此选项和 -g,则可能会出现调试问题。 -fbranch-target-load-optimize 在序言/结尾线程之前执行分支目标寄存器加载优化。 目标寄存器的使用通常只能在重新加载期间公开,因此将负载提升出循环并进行块间调度需要单独的优化过程。 -fbranch-target-load-optimiz...
关闭程序中的向量化的选项;gcc -O3会自动打开 -ftree-vectorize选项 -fno-inline 忽略代码中的inline关键字,该选项使编译器将内联函数以普通函数正常对待,等同于无优化选项的处理。 -fshort-enums 支持给enum类型分配它声明的值域范围的字节数,即enum类型等于大小足够的最小整数类型。 typedef enum num{ one = 1...
gcc hello.c -o hello -I .. -g表示可以调试,比如我们之前讲的gdb、valgrind,如果想要调试的时候显示源码、行号,编译的时候就需要加上-g选项。 gcc hello.c -o hello -g -O表示优化,可以是O0到O3,我们之前讲volatile的时候,就用过这个选项,不同的优化等级,对代码的处理略微有些区别。 hello.c #include...
-g: 在锚译的时候,同灶产娄基本的调试信息 -ggdb: 岛可能漆生密gdb的怖鹿僻用忘帚试信息。钟产使崇-g和-ggdb睁无用的,从结果看,gcc会忽拖-g,使-ggdb生裕 -w: 译揪成任何警告信雕(这会关闭所秫夹囱信息,不建议使用) -Wall: 吩唧主清的警告信息 ...
实际上 g++ == gcc -xc++ -lstdc++ -shared-libgcc,第一项是编译选项,表示按照c++编译,后面两项是链接选项,表示g++要相比gcc多链接其他库函数 大多数系统,GCC 安装时会安装一名为 c++ 的程序。如果有安装,它和 g++ 等同 gcc编译的四个阶段:预处理、编译、汇编、链接。前三个阶段对gcc和g++几乎都是一样的...
gcc 和 g++ 的选项基本上都是一样的,我们这里就重点以gcc为例来进行讲解。 2. gcc 的使用 通过上面的了解我们知道gcc 和 g++ 其实就是Linux系统上的编译器。 编译器其实就是是一种将高级程序代码(如 C、C++、Java等)转换为低级机器代码或可执行文件的软件工具。
-g 产生符号调试工具(GNU的 gdb)所必要的符号信息。想要对源代码进行调试,就必须加入这个选项。 -O 对程序进行优化编译、链接。采用这个选项,整个源代码会在编译、链接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是编译、链接的速度就相应地要慢一些,而且对执行文件的调试会产生一定的影响,造成一...
-g 只是编译器,在编译的时候,产生调试信息。 -gstabs 此选项以 stabs 格式声称调试信息, 但是不包括 gdb 调试信息。 -gstabs+ 此选项以 stabs 格式声称调试信息, 并且包含仅供 gdb 使用的额外调试信息。 -ggdb 此选项将尽可能的生成 gdb 的可以使用的调试信息。