c++ - Linux 64 位移植问题

标签 c++ linux 64-bit porting

我正在从事 Linux 64 位移植工作,我们在代码中使用了很多 long 变量。现在在 Linux 64 上 long 是 64 位。我们在位操作代码中遇到问题。 我听说有选项 LLP64(long as 32) 和 ILP64(long as 64)。但我不知道它的编译器选项(g++)。 我没有更多的疑问, 如果我使用选项 LLP64 进行编译,那么可执行文件是否为 native 64 位?
使用此选项,我是否可以包含 64 位第三方库?

最佳答案

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

你必须要么

  • 修复代码以处理 32 位或 64 位长整数,
  • 更改代码以使用 int(或更好的 int32_t)。
  • 更改代码以使用 long long(或更好的 int64_t)
  • 将应用程序编译为 32 位(如果它使用的 32 位库存在,它将在 64 位机器上运行良好)

关于c++ - Linux 64 位移植问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3716237/

相关文章:

64-bit - 在x64系统中从NSIS安装程序安装驱动程序

c++ - 使用指向成员函数的指针与使用开关的成本是多少?

c++ - 变量和 setter/getter 的 Qt 命名约定,这样它们就不会发生冲突?

c++ - 使用 C++14 的自动函数类型返回推导代替 std::common_type 总是安全的吗?

c++ - 如何确定输入(stdin)已损坏?

linux - rm -rf 不起作用,不知道为什么

c++ - 运行程序时找不到共享对象库,但在编译过程中已链接

Linux 纪元时间

delphi - 如何在 asm block 中引发异常?

windows - 如何在 Win7 -64 位中安装 openCV