小编Ada*_*rry的帖子

为什么/usr/include 中有多个头文件副本?

我一直在浏览我的 /usr/include 文件夹,试图熟悉布局,我注意到头文件有多个副本(至少按名称,我实际上并没有区分它们以查看它们是否准确副本)在 /usr/include 的几个子目录中找到。对于标准 C 和 C++ 头文件以及 POSIX/LSB 标准头文件尤其如此。

一些示例包括(注意 ./ 指的是 /usr/include):

./asm-generic/unistd.h
./linux/unistd.h
./unistd.h
./x86_64-linux-gnu/sys/unistd.h
./x86_64-linux-gnu/bits/unistd.h
./x86_64-linux-gnu/asm/unistd.h

./stdlib.h
./x86_64-linux-gnu/bits/stdlib.h
./c++/7/stdlib.h
./c++/7/tr1/stdlib.h

./c++/7/cmath
./c++/7/ext/cmath
./c++/7/tr1/cmath

./asm-generic/termios.h
./linux/termios.h
./x86_64-linux-gnu/sys/termios.h
./x86_64-linux-gnu/bits/termios.h
./x86_64-linux-gnu/asm/termios.h
./termios.h

./linux/time.h
./time.h
./x86_64-linux-gnu/sys/time.h
./x86_64-linux-gnu/bits/time.h
Run Code Online (Sandbox Code Playgroud)

为什么是这样?为什么某些 C 标准头文件会出现在 C++ 位置?

我只安装了一个编译器(GCC 7)。

c c++ linux-headers

6
推荐指数
1
解决办法
2282
查看次数

如何稳健地确定使用哪个版本的 GCC 从 bash shell 构建内核

bash shell 中确定用于编译当前运行的内核的 GCC 版本的可靠方法是什么?我需要它的形式,major.minor.patch以便我可以将它与输出中第一行的最后一个标记进行比较gcc --version

我一直在/proc/version使用以下内容进行解析:

awk '{print $8}' /proc/version | tr -d ','
Run Code Online (Sandbox Code Playgroud)

但是,我正在查找的版本字符串并不总是出现在/proc/version. 有更稳健的方法吗?一个仅适用于 Ubuntu 的强大解决方案就足够了,如果更困难的话,无需使其独立于发行版。

bash ubuntu version gcc linux-kernel

4
推荐指数
1
解决办法
559
查看次数

标签 统计

bash ×1

c ×1

c++ ×1

gcc ×1

linux-headers ×1

linux-kernel ×1

ubuntu ×1

version ×1