gcc编译生成o程序
1. 请问:c语言编译成功后生成后缀名为.o的文件,什么东东,什么作用。
是编译成功后的文件。
以hello.c为例:
先将源文件编译成目标文件:gcc - c hello.c。生成hello.o文件,再将目标文件编译成可执行文件:gcc -o hello hello.o
这样就生成了可执行文件,在./hello就可以运行hello了。
2. linux gcc编译好C文件后生成.o目标文件,但是在执行中($./test)出现没有那个文件或目录,请大神帮忙。
.o文件是不能被执行的, c的源码要经过编译和链接才能生成可执行文件,你只是编译了,没有链接,这个文件相当于Windows下的test.obj而已。gcc -Wall test.c -o test
3. gcc-c和-o有什么区别
-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省掉,效果是一样的,因为中间文件默认与源文件同名,只是后缀变化)。
1、如果GCC不带-C参数,编译一个源代码文件(test.c)。那么会自动将编译和链接一步完成,并生成可执行文件。可执行文件可以有-o参数指定(test.o)
2、如果是多个文件,则需要先编译成中间目标文件(一般是.o文件),在链接成可执行文件,一般习惯目标文件都是以.o后缀,也没有硬性规定可执行文件不能用.o文件。
(3)gcc编译生成o程序扩展阅读:
gcc:GNU编译器套件(GNU Compiler Collection)包括C、C++、Objective-C、Fortran、Java、Ada和Go语言的前端,也包括了这些语言的库(如libstdc++、libgcj等等)。GCC的初衷是为GNU操作系统专门编写的一款编译器。GNU系统是彻底的自由软件。此处,“自由”的含义是它尊重用户的自由。
基本用法:
-o output_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。
-O,对程序进行优化编译、链接,采用这个选项,整个源代码会在编译、链接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、链接的速度就相应地要慢一些。
4. linux下能生成两种.o的文件 一个是我用gcc编译生成的 另一个是makefile生成的,这俩一样么
一样的,makefile只是一个脚本,它实际调用的是gcc。
但你这里用“gcc -o helloword.o helloworld.c”调用的是linux(x86的)的标准gcc,而你的makefile脚本中的gcc版本是arm_v5t_le-gcc(是用在arm嵌入式处理器的)。两个处理器不一样,自然编译出的helloworld.o不一样,前者只能在x86电脑上运行,后者只能在arm嵌入式处理机中运行。
你把makefile中的“CC=arm_v5t_le-gcc”改成“CC=gcc”然后再make,之后肯定能运行。
5. gcc怎么编译.o
gcc中-c和-o是编译时可选的参数
-加-c, (compile)只编译生成中间同名目标文件,不链接
-加-o,(output)指定输出文件名,该文件为可执行文件,不加-o会默认生成a.out
举例:
gcc -c hello.c 编译生成hello.o文件
gcc -o hello hello.c 生成可执行文件hello
6. linux下 为什么要生成.o文件 .o文件和.c文件还有生成的可执行文件有啥区别啊
linux下.c只是简单的文本文件,.o是编译之后的二进制文件,操作方法如下;
1、首先在电脑中打开linux,然后安装gcc g++编译工具。