Linux 64位移植问题

发布于 2024-09-19 02:59:13 字数 214 浏览 1 评论 0原文

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

I am working on Linux 64 bit porting and we used a lots of long variable in our code. Now on Linux 64 long is 64 bit. We are facing problem in the bits manipulation code.
I heard there are options LLP64(long as 32) and ILP64(long as 64). But I don’t know the compiler option for it(g++).
I have few more doubts,
If I compile with option LLP64 then the executable will be native 64 bit or not?
With this option, can I include the 64 bit third libraries or not?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我ぃ本無心為│何有愛 2024-09-26 02:59:13

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

您必须

  • 修复代码以处理 32 或 64 位的 long,
  • 更改代码以使用 int(或更好的 int32_t)。
  • 更改代码以使用 long long (或更好的 int64_t)
  • 将应用程序编译为 32 位(只要存在它使用的 32 位库,它将在 64 位计算机上正常运行)

gcc doesn't let you choose LLP64 , atleast not on linux targets. Even if it did, you wouldn't be ABI compatible with other libraries (including libc).

You'll have to either

  • fix the code to deal with longs being 32 or 64 bit,
  • change the code to use ints (or better int32_t).
  • change the code to use long long (or better int64_t)
  • compile the application as 32 bit (which will run fine on a 64 bit machine provided the 32 bit libraries it uses are present)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文