2010-09-15 120 views
1

我正在研究Linux 64位移植,我们在代码中使用了很多长变量。现在在Linux 64上长64位。我们在位操作代码中遇到问题。 我听说有选项LLP64(只要32)和ILP64(只要64)。但我不知道它的编译器选项(g ++)。 我还有几个疑问, 如果我用选项LLP64进行编译,那么可执行文件将是本机64位或不是?
有了这个选项,我可以包含64位的第三个库吗?Linux 64位移植问题

回答

6

gcc不允许您选择LLP64,至少不是Linux目标。即使这样做,您也不会与其他库(包括libc)兼容。

你必须要么

  • 修复代码来处理多头是32位或64位,
  • 变化的代码使用整数(或更好int32_t)。
  • 变化的代码来使用长长(或更好的int64_t)
  • 编译该应用程序作为32位(在64位机器提供它使用32个库存在其中将运行细)
+0

值得要提到int32_t和int64_t类型来自[stdint.h](http://www.opengroup.org/onlinepubs/000095399/basedefs/stdint.h.html)。许多人为什么不知道它。 – Dummy00001 2010-09-15 11:09:20