g编译o
① gcc. g++ 编译后生成的.O文件有何不同
从总体来看,没什么不同,都是
文件头、段表、段内容这样的一个格式。
往内容来看,两者有区别的,g++是把文件当C++,gcc是把文件当作C。首先是符号生成规则(name mangling)不一样,还有就是连接的库也不一样。
② gcc编译时把-o放在-g前面为什么会报错
这是因为-g是选项,后面不需要给参数,而-o是参数,后面需要加上输出文件名称,所以,gcc test.c -o -g test,会生成一个-g的输出文件,而后面的test就成非法参数了。
③ gcc怎么编译.o
gcc中-c和-o是编译时可选的参数
-加-c, (compile)只编译生成中间同名目标文件,不链接
-加-o,(output)指定输出文件名,该文件为可执行文件,不加-o会默认生成a.out
举例:
gcc -c hello.c 编译生成hello.o文件
gcc -o hello hello.c 生成可执行文件hello
④ g 如何编译出UTF-8编码的exe
把源文改为utf-8编码就可以了,g++默认的编译编码就是utf-8的,也可以使用-fexec-charset=charset,此选项指定窄字符或窄字符串的字面值常量的内部编码方式,默认为UTF-8。例如指定此选项为GBK,则窄字符或窄字符串常量将会以GBK编码方式存储而不是默认的UTF-8编码方式。
例如:
g++-fexec-charset=UTF-8main.cpp-omain.exe&&main.exe
#include<iostream>
usingnamespacestd;
intmain(intargc,charconst*argv[])
{
cout<<"你好。"<<endl;
return0;
}
⑤ gcc -g -o -c分别是什么意思
-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文件。
(5)g编译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,对程序进行优化编译、链接,采用这个选项,整个源代码会在编译、链接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、链接的速度就相应地要慢一些。