我正在从事 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/