使用32位64位机器编程兼容linux

时间:2015-10-22 05:15:48

标签: linux linux-kernel

我希望我的源代码在源代码级别而不是linux中的对象级别方面兼容32位和64位机器。

Q1)然后,我应该怎样照顾?我认为有一件事是,我需要处理指针转换的整数。 如果我使用" long int",它在32位机器上是32位长度,在64位机器上是64位长度?适当的方式是什么? 我想是否可以使用" long int"。

Q2)我的申请是否符合32位或64位的要求? 例如,使用构建参数?

1 个答案:

答案 0 :(得分:0)

  1. 使用“与指针大小相同的整数”的正确方法是使用size_t(与unsigned long int相同的大小)和ssize_t(与{{1相同的大小) }})。
  2. 如果你写long int,它将在32位机器上编译32位,在64位机器上编译64位。如果你运行gcc file.c,它将编译为32位而不管你的机器如何,同样gcc -m32 file.c将编译为64位而不管机器。
  3. 您不需要做任何特殊的事情来编写可移植的C代码;在编写C代码时,你很少需要考虑架构。例如,无论您使用gcc -m64 file.c还是gcc -m32 hello.c进行编译,都可以正常运行:

    gcc -m64 hello.c