我在 64 位 Intel i3 处理器上安装了 libc6-i386。
我是否应该安装 amd64 版本的 libc 还是坚持使用 i386,因为我有一个英特尔处理器?
答案1
总结:如果你正在运行 64 位版本的 Ubuntu,并且你正在调用 GCC 作为gcc
(对于 C)或g++
(对于 C++),您不必担心libc-i386
您的系统上的存在。具有可运行编译器的 64 位系统将生成与正确的 64 位版本 libc 链接的二进制文件。
libc6-i386 能编译 64 位可执行文件吗?
libc-i386
不编译任何东西,因为它不是编译器。C 编译器是gcc
. libc 二进制文件和 libc 头文件都很重要,但是被动的在构建过程中。代码经过预处理,包括来自头文件的信息。它被编译。它被链接到 libc。libc 没有做任何这些事情,您的构建工具 - 原则上gcc
(从某种意义上说,这是您最常运行的命令,以使这些事情发生) - 执行此操作。
如果您正在运行 64 位版本的 Ubuntu,并且安装了 C 编译器,那么您已经拥有必要的库和头文件来针对 libc 的 64 位实现编译和链接程序。我猜这就是你所处的情况。注意32 位 libc 的存在并不妨碍默认使用 64 位 libc除非您正在交叉编译 32 位二进制文件(您通常知道自己在做什么,因为它需要一点努力,并且您可能不会以 调用gcc
)gcc
。因此,您不必担心libc-i386
系统中是否存在 。
如果你正在运行 32 位版本的 Ubuntu,并且想要交叉编译64 位二进制文件,那么您将需要提供 64 位版本的 libc 以及它的头文件。(Ubuntu 官方提供的头文件由名称以 结尾的软件包提供-dev
。)但是,虽然 32 位二进制文件可以在 64 位操作系统上运行,但 64 位二进制文件无法在 32 位操作系统上运行。因此,除非您真的需要交叉编译,否则通常最好在 64 位操作系统中构建 64 位程序。
由于您提供的信息量太少,很难针对您的情况给出更具体的答案。