Link 明确到 libc (-lc)

Link explicitly to libc (-lc)

当使用 libc 符号时,我是否应该明确地 link 我的程序或库反对 libc?

cc ... -lc

如果是程序,问题适用于 Makefile,如果是库,则问题适用于 Makefile 和 pkg-config 文件。

附带一个问题:如果我根本不使用任何 libc 符号怎么办?那可能是一个非常无用的程序,但我很好奇。

我好像记得有一些文章或书籍推荐这样做,但现在找不到了。有没有做或不做会出问题的情况?

编辑:

我通常使用 gccclang。 (我还编辑了第三段以明确询问 Makefiles 和 pkg-config 文件。)

what if I don't use any libc symbols at all?

那么你的程序是独立的,不需要与标准库链接。

如果您使用 gcc,您需要使用 -nostdlib 命令行选项进行编译。

Should I explicitly link my program or library against libc, when using libc symbols?

没有。来自 POSIX cc:

The standard C-language library is automatically available to the C-language program.

what if I don't use any libc symbols at all?

然后仍然不要 link 显式反对 libc 并让编译器 link 自动使用它。

Is there any situation in which doing so or not doing it can be problematic?

当您正在编写内核、裸机软件或其他特定于您正在使用的某些环境的低级程序时,您不想 link 标准库。另外,当你不接受图书馆的许可时。