编译程序linux 32位vs 64位

Les*_*ieg 4 c++ linux

我是32位vs 64位的新手.我用Linux编写了C++程序.我想知道程序是32位还是64位?这是因为我从其他人编写的makefile编译程序.

我该如何检查它,如何将其修改为64位?

谢谢.

Sve*_*ach 6

要检查程序是否为64位,可以编译并运行

file <name-of-the-binary>
Run Code Online (Sandbox Code Playgroud)

例:

~> file /bin/ls
/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
Run Code Online (Sandbox Code Playgroud)

所以,/bin/ls在我的系统上的32位.

代码是编译为32位还是64位取决于您的环境和编译器设置.要编译64位程序,您需要64位内核 64位"userland" - 特别是64位版本的libc6和编译器库.通常,您的编译器只会为您的环境选择适当的模式.

一些Linux发行版提供"混合"环境:64位内核,包含32位和64位库.如果您的环境是这样的,您的编译器可能会提供编译两种类型的二进制文件.如何在它们之间进行选择取决于您的硬件平台和编译器.对于x86-64平台上的gcc,编译器开关将是- -m32并且-m64只需查看gcc手册页.


phi*_*ant 5

您可以使用file命令检查生成的可执行文件是32位还是64位.

然后,正如已经回答的那样,-m64和-m32选项可用于指示编译器.您需要拥有所有可用的依赖项(库).