2

在 Linux (Ubuntu) 上,我可以看到 malloc() 和 new() 实现中使用的 C/C++ 代码的路径和文件名是什么?

我查看了 /usr/include 但开始迷路了。它是否取决于我安装的 gcc/g++ 版本?

如果有人也能给出一个一般性的答案,这将帮助我了解 Linux 如何存储所有“本机”功能,那将不胜感激,我将不必再次要求不同的功能。

4

4 回答 4

1

“实现”是您可以链接的库(“a”文件或“so”文件)以及包含声明的标头(“h”文件)。

C 和 CPP 文件位于创建这些库的计算机上,然后再用于构建您的系统。而且由于您的程序不需要它们的源代码(您只需链接二进制文件,而不是源代码),它们不会与系统构建一起分发。

这就是为什么您必须从源存储库下载这些文件的原因,就像您希望自己重建系统一样。

于 2013-06-23T15:30:49.253 回答
1

可以在此处找到 GNU 标准 C lib 实现的 GIT

从树中的这一点您应该也能找到其余部分

于 2013-06-23T14:35:36.097 回答
1

一件事:new是一个 C++ 关键字,它使用malloc.

的源malloc代码在您的版本的源代码中libc,可能是glibc. 看看他们的来源。

其他作为系统调用的内置函数仅在glibc调用底层系统调用时具有 shell 实现。

于 2013-06-23T14:36:23.230 回答
0

您可以在编译器使用的 C 标准库的实现中找到这一点。

我不确定Ubunta。Debian 的 gcc 使用 eglibc,它的源代码可以在这里找到

于 2013-06-23T14:35:09.687 回答