• gcc/g++命令


    参考:http://www.cnblogs.com/cryinstall/archive/2011/09/27/2280824.html

    注意:gcc和g++是linux系统下的编程常用指令,C语言文件用gcc,cpp文件用g++。

    1.预处理 

    g++ -E filename.cpp > filename.i

    功能:输出预处理后的文件,linux下以.i为后缀名。只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里 。

    这一步主要做了这些事情:宏的替换,还有注释的消除,还有找到相关的库文件。用编辑器打开Test.i会发现有很多很多代码,你只需要看最后部分就会发现,预处理做了宏的替换,还有注释的消除,可以理解为无关代码的清除。下面是Test.i文件的最后部分,可以看见宏的替换和注释的消除。

    2.将.i文件生成.s汇编语言文件 

    g++ -S filename.cpp 

    功能:会生成Test.s文件,.s文件表示是汇编文件,用编辑器打开就都是汇编指令。

    g++ -s filename.cpp / g++ filename.cpp

    功能:会生成a.out文件,.out文件并不是可执行文件的扩展名,可以用objdump -S a.out打开就都是汇编指令,a表示默认文件名。

    3.生成.o文件  

    g++ -c filename.cpp 

    功能:会生成template.o文件,.o是GCC生成的目标文件,除非你是做编译器和连接器调试开发的,否则打开这种.o没有任何意义,二进制机器码一般人也读不了。

    4.连接目标代码,生成可执行程序  

    g++ Test.o -L /usr/lib/x86_64-linux-gnu/root5.34/cint/linclude/iostream

    功能:将.o文件与所需的库文件链接整合形成可执行文件。-L 表示链接,这里我后面写的是绝对路径,相对各人电脑不同

    这样生成的是默认文件名文件 a.out,也可以自己定义文件名在上面各个步骤中你可以用-o命令输出你自己想要的各种名字。

    g++ Test.cpp -o test.exe,最后面的文件有多种命名形式,test,test.exe,test.out都可以,运行的时候:./filename,如果想要打开这些文件,应该使用objdump -S filename

    注意:

    .out 是 gcc 编译器的输出文件的默认扩展名,并不是可执行文件的扩展名。gcc 可以输出不能运行的文件,但默认还是 .out 。

    .out文件就是扩展名为out的文件,它本身不代表任何信息。在Linux中判断文件是否是可执行文件,首先要看文件的属性是否是可执行的,它没有一个默认的扩展名表示此文件为可执行文件。为了方便,Linux中可执行文件一般都是没有扩展名的。 在使用gcc编程时,没有指定输入可执行文件名,默认生成可执行文件a.out文件。

     Linux 的可执行文件是基于权限确定的。而不是基于扩展名。

  • 相关阅读:
    [转]lftp的致命错误:证书验证:不信任
    github每次push都需要密码以及用户名的解决办法
    Fedora最小化安装后没有ifconfig命令
    [转载]MySql常用命令总结
    chrome浏览器强制采用https加密链接
    红帽系列linux自行配置本地yum源
    linux 下dd命令直接清除分区表(不用再fdisk一个一个的删除啦)
    linux分区工具fdisk的使用
    Java多线程实现......(1,继承Thread类)
    第一篇文章--我为什么要写博客?
  • 原文地址:https://www.cnblogs.com/qinguoyi/p/7507270.html
Copyright © 2020-2023  润新知