提问界面标记了许多“可能已经有您的答案的问题”,但我已尝试进行尽职调查以检查是否有任何人在问我在这里的确切内容。如果这是重复的,我深表歉意。
假设我有以下不正确的程序:
extern void undefined_function(void);int main(int argc, char **argv){ undefined_function(); undeclared_function(); exit(0);}
用 gcc 编译得到:
$ gcc warnings.c warnings.c: In function ‘main’:warnings.c:6:2: warning: incompatible implicit declaration of built-in function ‘exit’ [enabled by default]/tmp/ccVzjkvX.o: In function `main':warnings.c:(.text+0x15): undefined reference to `undefined_function'warnings.c:(.text+0x1f): undefined reference to `undeclared_function'collect2: ld returned 1 exit status$
我知道为什么会发出这些警告,以及如何纠正它们 - 这不是我的问题。
从输出中可以明显看出,gcc 将 exit()
与其他未定义/未声明的函数区别对待,因为它认为它是“内置函数”
对于给定的 gcc,我如何判断 gcc 认为是“内置函数”的函数列表是什么?它正是 c 标准库函数的列表还是其他什么?
我考虑过做 nm libc.so
,但是在我的 Ubuntu VM 上,这个 glibc 似乎被剥离了,所以在这方面没有有用的信息:
$ nm /lib/x86_64-linux-gnu/libc.so.6nm: /lib/x86_64-linux-gnu/libc.so.6: no symbols$
我是一名优秀的程序员,十分优秀!