在 Linux (Ubuntu) 上,我可以看到 malloc() 和 new() 实现中使用的 C/C++ 代码的路径和文件名是什么?
我查看了 /usr/include 但开始迷路了。它是否取决于我安装的 gcc/g++ 版本?
如果有人也能给出一个一般性的答案,这将帮助我了解 Linux 如何存储所有“本机”功能,那将不胜感激,我将不必再次要求不同的功能。
在 Linux (Ubuntu) 上,我可以看到 malloc() 和 new() 实现中使用的 C/C++ 代码的路径和文件名是什么?
我查看了 /usr/include 但开始迷路了。它是否取决于我安装的 gcc/g++ 版本?
如果有人也能给出一个一般性的答案,这将帮助我了解 Linux 如何存储所有“本机”功能,那将不胜感激,我将不必再次要求不同的功能。
“实现”是您可以链接的库(“a”文件或“so”文件)以及包含声明的标头(“h”文件)。
C 和 CPP 文件位于创建这些库的计算机上,然后再用于构建您的系统。而且由于您的程序不需要它们的源代码(您只需链接二进制文件,而不是源代码),它们不会与系统构建一起分发。
这就是为什么您必须从源存储库下载这些文件的原因,就像您希望自己重建系统一样。
从树中的这一点您应该也能找到其余部分。
一件事:new
是一个 C++ 关键字,它使用malloc
.
的源malloc
代码在您的版本的源代码中libc
,可能是glibc
. 看看他们的来源。
其他作为系统调用的内置函数仅在glibc
调用底层系统调用时具有 shell 实现。
您可以在编译器使用的 C 标准库的实现中找到这一点。
我不确定Ubunta。Debian 的 gcc 使用 eglibc,它的源代码可以在这里找到。