2010-09-15 200 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