分享

gcc后面既有-c又有-o是什么意思?

 心不留意外尘 2016-11-07
 
比如gcc -c a.c -o a.o ,-o不是后面接生成的可执行文件名么
wjlabcwjl   2011-02-15 09:52
 
最佳答案
-c和-o都是gcc编译器的可选参数

-c表示只编译(compile)源文件但不链接,会把.c或.cc的c源程序编译成目标文件,一般是.o文件。
-o用于指定输出(out)文件名。不用-o的话,一般会在当前文件夹下生成默认的a.out文件作为可执行程序。

例如
gcc -c test.c将生成test.o的目标文件
gcc -o app test.c将生成可执行程序app

gcc -c a.c -o a.o表示把源文件a.c编译成指定文件名a.o的中间目标文件(其实在这里,你把-o a.o省掉,效果是一样的,因为中间文件默认与源文件同名,只是后缀变化)。

 

-g为了调试用的
加个-g 是为了gdb 用,不然gdb用不到

-o output_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。

一般语法:
gcc filename.c -o filename
上面的意思是如果你不打 -o filename 那么默认就是输出filemame.out.这个-o就是用来控制输出文件的。

问:
"-c 只编译不链接 ", 打上-c就是不产生可执行文件吗?
追答:
产生.o文件,就是obj文件,不产生执行文件

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多