问答详情
源自:3-1 Linux下第一个C程序

mian.o 和main.out有什么区别?

mian.o 和main.out有什么区别?out不可覆盖那个.o可以覆盖不?比如:gcc XXXX.c XXX.c .o这个类似的代码能成立吗?当然XXXX和XXX是可以执行的

提问者:浴火重生0401 2015-11-16 09:18

个回答

  • qq_MatrixNeo_0
    2016-02-10 15:39:11

    有人知道.out文件和使用-o参数指定的可执行文件之间有什么区别吗?还是就是一个名字的区别呢?

  • onemoo
    2015-11-16 13:48:59

    .o 是编译器生成的“object文件”(大概叫目标文件)

    .out 应该就是可执行文件。


    C代码要经过“编译”和“链接”才能执行,单纯地编译就是生成 .o文件 ,把(单个或多个).o文件(还有各种库)链接起来才能形成可执行文件。


    gcc xxx.c  会将xxx.c编译链接生成一个叫a.out的可执行文件。

    gcc xxx.c -o yyy  会把xxx.c编译链接生成名为yyy的可执行文件, -o 参数可以指定输出的文件名(不指定就是上面的a.out)

    gcc -c xxx.c  会将xxx.c编译成xxx.o

    gcc xxx.o yyy.o zzz.o  会把这几个.o文件链接起来形成可执行文件(你也可以直接调用链接器ld来链接它们)