`man cc`:没有关于 -Wall 和 -g 标志的信息(艰难地学习 C)

`man cc`: no info about -Wall and -g flags (Learn C the Hard Way)

我正在进行“艰难地学习 C”的练习 2。其中一项额外学分挑战是:

Read man cc to find out more information on what the flags -Wall and -g do.

我在 OSX 并使用 man cc 打开手册页,但它没有关于 -Wall-g 的任何信息。然而,我登录到一台机器 运行 Ubuntu 并找到了一个更大的 cc 手册页,其中确实包含了这些信息。

为什么 OSX(Darwin?)和 Ubuntu 的手册页不同?我显然对这些东西一无所知,但我会假设手册页会与软件一起打包,因此无论软件安装在哪里都是一样的。

很可能您的 OS X 安装使用的是名为 clang 的编译器,而您的 Linux 安装使用的是名为 gcc 的编译器。

因此 OS X 上的手册页可能是由 clang 团队编写的,而 Linux 安装上的手册页可能是由 gcc 团队编写的。

虽然这两个编译器通常接受相同的命令行参数。

编译器 *nix 手册页现在只为您提供最基础的知识。编译器链中的控件太多,无法在手册页中提供所有控件。即使 --help 选项也不会给你所有的控制权。 clang --help(在 OSX 上)给你大约 350 行,但是 clang 警告控件的单个列表大约有 450 行......很难计算编译器为你提供的选项数量, 但可能有数千...

对于这样的工具,我建议你看看在线手册。

为什么不同?因为编译器链依赖于 Architecture/OS/ABI/Assembly/Linker 等。所以同一个编译器(例如 gcc)在不同平台上的行为可能不同;手册应该不同。无论如何,-Wall-g 是非常常见和基本的,我很惊讶 Wall 没有出现在 OSX 手册中......