gcc编译-o是否可以把前置文件放在目标文件后面,比如gcc -o a.out hello.c?
- gcc 生成 .o 文件时问什么必须要目标文件名,不是可以默认吗?
- gcc后面既有-c又有-o是什么意思?
- 为什么GCC编译后不显示a.out文件?
- LInux 如何使用GCC编译器将一个文件夹下的100个.o文件打包成一个静态库文件(.a)
gcc 生成 .o 文件时问什么必须要目标文件名,不是可以默认吗?
总体看没同都
文件、段表、段内容格式
往内容看两者区别g++文件C++gcc文件作C首先符号规则(name mangling)连接库
有两种方法
1。保存好你编译的c文件,假如你的文件名是main.c,这是源文件,我们要把它编译成目标文件即以.o结束的文件(gcc -c main.c) ,再使用ll main*就可以查看到生成的目标文件,再将目标文件生成可执行文件(gcc -o main main.o) ,这里用main替代生成的可执行文件,再使用ll main*就可以查看到生成的可执行文件main,最后就是执行可执行文件了(sh main),这样就可以得到结果了。
2。可以一步到位,直接生成可执行文件,gcc -o main main.o,执行方法如方法一,用方法一可以看到详细的执行过程,建议使用方法1
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省掉,效果是一样的,因为中间文件默认与源文件同名,只是后缀变化)。
扩展资料:
gcc -c与gcc -o以及不加参数的区别
-c Compile and assemble, but do not link.
-o <file> Place the output into <file>.
'none' means revert to the default behavior of guessing the language based on the file's extension.
中文翻译一下:
-c 编译和汇编,但不要链接。
-o <file> 将输出放入<文件>。
'无参数' 表示恢复为基于文件扩展名猜测语言的默认行为。
为什么GCC编译后不显示a.out文件?
gcc wom.c 将直接产生a.out,可直接执行
gcc -o wom wom.c 将产生wom,可直接执行
gcc -s wom.c 将产生wom.s,这是汇编
LInux 如何使用GCC编译器将一个文件夹下的100个.o文件打包成一个静态库文件(.a)
你已经用gcc编译出目标文件了,用ar工具打包成.a文件就行了啊,示例:
如上图,假设我有test1.c,test2.c两个源文件,先使用gcc -c *.c将源文件编译成目标文件,可以看到,生成了test1.o,test2.o两个目标文件,然后,使用ar命令:ar crv libtest.a *.o将该目录下的所有目标文件打包生成了libtest.a文件。这样,你在编译的时候就可以直接使用这个静态库了。