gcc -c x.c
Run Code Online (Sandbox Code Playgroud)
告诉编译器从 xc 文件创建目标代码,而不是尝试链接它,对吧?
该-o选项告诉编译器什么信息,如下所示?
gcc a.o y.o -o x.out
Run Code Online (Sandbox Code Playgroud)
我的另一个问题是,当我有如下源代码时:
#include <stdio.h>
int main(){
puts("");
}
Run Code Online (Sandbox Code Playgroud)
好吧,编译器知道在哪里寻找stdio.h,但是可执行文件必须链接到stdio.o,不是吗?文件驻留在哪里stdio.o?
请参阅https://man7.org/linux/man-pages/man1/gcc.1.html。在“概要”部分下,您将看到-o选项。
关于
好吧,编译器知道在哪里寻找
stdio.h,但是可执行文件必须链接到stdio.o,不是吗?文件驻留在哪里stdio.o?
第一个问题的答案是“否”。由于第一个问题的答案是“否”,因此第二个问题不相关。
中声明的函数和变量stdio.h不必在 中stdio.o。它们通常位于链接器查找库文件的目录之一中的库(.a或)中。.so
一般来说,没有规定每个.h文件都有对应的.o文件。可以将一个.h文件中声明的函数和变量在多个文件中实现.c,从而产生多个.o文件。也可以将在多个.h文件中声明的函数和变量在一个文件中实现.c。这些的组织方式因项目而异。
.c另一方面,每个文件都有一个对应的.o文件(我还没有见过任何.c可以编译多个文件来创建一个.o文件的平台)。.o编译文件产生的所有.c文件都链接在一起以创建可执行文件。
| 归档时间: |
|
| 查看次数: |
23498 次 |
| 最近记录: |