zoukankan      html  css  js  c++  java
  • gcc/g++命令参数

    在windows环境下,我们运行一程序,只需要在VS中点击运行按键即可,VS帮我们做完了程序的预处理、编译、汇编、链接阶段
    但是在linux环境下,我们只能借助gcc/g++完成这一系列的操作
    -o参数:g++ main.cpp -o main
      -o:output(输出)的意思,指将main.cpp输出为main。如果不指名具体的执行文件名(g++ main.cpp),将会在同级目录下生产a.out文件
    -E参数:g++ -E main.cpp -o main.i
      -E:prEprocessing(预处理)的意思,该过程完成:宏替换、去注释、头文件展开、添加行号等动作
    -S参数:g++ -S main.i -o main.s
      -S:aSsemble(汇编)的意思。该过程将源码变为汇编代码
    -c参数:g++ -c main.s -o main.o
      -c:compile(编译)的意思。该过程将一系列的汇编代码,变成机器代码
    编译的过程代码只需要找到有匹配的声明即可,不管接口有没有定义,所以出现未定义符号的阶段都是在链接阶段。
    C++一般不会存在重复声明的问题,因为编译阶段,会将函数名以及变量类型组合成一个符号。
    C语言会存在重复声明的问题,因为C语言在编译阶段只会将函数名组成一个符号,所以即使参数不同也无济于事。
    当然我们可以在整个编译链接阶段加入额外的参数进行控制,如:
     -g,产生符号调试工具(GNU的gdb)所必要的符号资讯,要想对源代码进行调试,我们就必须加入这个选项。
     -O,对程序进行优化编译、连接,采用这个选项,整个源代码会在编译、连接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、连接的速度就相应地要慢一些。
     -O2,比-O更好的优化编译、连接,当然整个编译、连接过程会更慢。
     -Idirname,将dirname所指出的目录加入到程序头文件目录列表中,是在预编译过程中使用的参数。C程序中的头文件包含两种情况∶

  • 相关阅读:
    shell脚本编程练习
    linux中()、[]、{}、(())、[[]]等各种括号的使用
    Linux Shell 变量自加
    while read line [linux] shell 学习
    踢出某正在访问的用户||永久禁止某IP访问
    linux设置 自定义脚本开机启动
    syntax error: unexpected end of file完美解决方案
    Linux利用nc命令脚本批量检测服务器指定端口是否开放
    41-贪心算法
    38-动态规划
  • 原文地址:https://www.cnblogs.com/wangdongfang/p/13358349.html
Copyright © 2011-2022 走看看