• gcc常用指令及相关知识


    1,gcc与g++的问题:

    1.后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序;后缀为.cpp的,两者都会认为是c++程序。

    2.编译阶段,g++会调用gcc,对于c++代码,两者是等价的,但是因为gcc命令不能自动和C++程序使用的库联接,所以通常用g++来完成链接。

    当我们常规使用gcc编译一个程序时,他通常执行4个步骤:预编译,编译,汇编,连接.

    当然我们可以通过指定某个选项来使它停止在某个步骤上.

    指定GCC进行的操作的选项

      -E :让GCC仅进行预处理;得到 .i 文件;

      -S :让GCC仅进行预处理,编译;得到 .s 文件;

      -c :让GCC仅进行预处理,编译,汇编;得到 .o 文件;

      -o Ouput:指定输出文件,让GCC仅进行预处理,编译,汇编,连接;得到 可执行文件(默认为a.out);

    控制输出信息

      -w:禁止输出所有警告信息

      -Wall:输出所有警告信息

      -Werror:将所有警告信息当成错误信息输出。

    调试相关选项(生成调试信息)

      -g:生成用于GDB调试程序使用的调试信息

      -p:生成用于prof程序使用的调试信息

      -pg:生成用于gprof程序使用的调试信息

    程序优化选项

      -O,-O1:初步优化(会占用更多时间进行编译,但是编译后的程序运行时占用的内存更少)

      -O2:比-O1更进一步优化

      -O3:比-O2更进一步优化

      -O0:不进行优化

    宏操作

      -D name:定义宏name的值为1,类似在源程序中使用#define name 1

      -D name=val:定义宏name的值为val,类似#define name val

      -U name:取消宏name的定义,类似#undef name

      -undef:取消所有系统指定或GCC指定的宏定义,但保留标准预定义的宏

    指定搜索目录

      -I dir,-Idir:追加目录dir到头文件的搜索路径中

      -L dir,-Ldir:追加目录dir到库文件的搜索路径中

      -Bprefix:指定gcc查找库文件,头文件,数据文件的目录

    指定使用的库文件,头文件

      -nostdinc:不使用标准头文件(默认在/usr/include)

      -nostdlib:不使用标准库文件(默认在/usr/lib)

      -l library:指定使用的库文件,默认gcc在编译一个程序时只连接到标准c库 上,是用该选项能够使他连接到指定的库上,例如若你要连接到数学库上(libm.a)则你只须指定 -lm就可以了。也就是说这个选项指定连接的库文件可以将前缀lib和后缀.a(或.so)省略。

      -nostartfiles:不使用标准的系统的startup文件

    指定连接库文件的方式

      -shared:动态连接到库文件上,这是默认行为。

      -static:静态连接到库文件上

      注:动态连接和静态连接的区别在于:动态连接是在程序运行时才连接到库文件上(也就是需要用到时才连接上),而静态连接则是在编译时就将程序连接到库文件中(这样做会增大程序,但便于移植)

    备注:

    选项 -Wall 开启编译器几乎所有常用的警告──强烈建议你始终使用该选项。编译器有很多其他的警告选项,但 -Wall 是最常用的。默认情况下GCC 不会产生任何警告信息。当编写 C 或 C++ 程序时编译器警告非常有助于检测程序存在的问题。

    参考:

    http://blog.chinaunix.net/uid-27040051-id-3444056.html

    http://www.ha97.com/2884.html

  • 相关阅读:
    Windows Mobile自动更新
    【实用代码片段】将json数据绑定到html元素 (转)
    B/S打印解决方案参考
    python基础之1-安装
    python里的生成器
    python中的函数的执行分类
    python中的return的返回与执行
    自创最精简的python装饰器
    python中的lambda函数用法
    python中的str.strip()的用法
  • 原文地址:https://www.cnblogs.com/yinheyi/p/5919910.html
Copyright © 2020-2023  润新知