簡體   English   中英

在i386 Debian下為amd64編譯

[英]Compiling for amd64 under i386 Debian

干杯,

我想避免在amd64上編譯代碼時遇到問題,但是我沒有64位CPU ,也沒有希望盡快升級到我的計算機的希望。 我沒有測試代碼的夢想(盡管理論上應該可以使用qemu-system ),但是我想至少使用gcc -m64編譯代碼。

基本構想原理:

CFLAGS=-m64 CXXFLAGS=-m64 ./configure --host x86_64-debian-linux

但是,代碼取決於我通常從Debian軟件包安裝的某些庫,例如libsdl1.2-devlibgmp3-dev等。 顯然,獲得64位版本的軟件包和32位版本的安裝不是一回事。

您將如何安裝64位軟件包? 您將它們放在哪里,如何將它們放置在哪里以及如何使用它們?

重復一遍,我沒有 64位CPU,也買不起新機器。

我已經設置了amd64-libs-dev來對gcc的-m64一些基本的推送。

到目前為止嘗試:

  • 使用debootstrap設置一個64位chroot監獄,以簡化庫的64位開發包的安裝。 由於完成設置(然后再安裝任何東西!)需要64位CPU,因此失敗。
  • 安裝gcc-multilibg++-multilib 除了依賴於我已經通過amd64-libs-dev安裝的libc6-dev-amd64 ,這似乎無濟於事。

如果使用的是debian,則在使用gcc -m64 ,需要安裝gcc-multilibg++-multilib 這還將安裝鏈接和創建64位二進制文​​件所需的所有文件。

您也不必具有支持64位的CPU。

然后,您可以按以下方式致電GCC:

$ gcc -m64 source.c -o source

對於外部庫,如果您已安裝multilib,則debian會負責。 我有一台32位計算機,可以為另一台計算機編譯64位代碼,並鏈接一些庫(例如libpng,libz)。 運行良好,可執行文件運行(從debian到debian)。

請查看這篇精美的文章,其中介紹了如何輕松創建32位chroot,您可以在其中安裝所有32位工具(gcc和libs)

Debian不能區分lib32lib64目錄嗎? 在這種情況下,無論體系結構如何,您都可以獲取軟件包並強制其安裝。

如果那不起作用(或使您的系統無法正常工作!),我將設置一個chroot環境,並在其中適當地獲取64位庫。

您想研究dchroot軟件包以建立一個簡單的chroot(8)環境-這樣,您可以在具有適當庫和依賴項的真實64位設置中編譯真實的amd64二進制文件。 這肯定可以通過其他方式工作(即,我在amd64主機上使用i386 chroot),但是我不明白為什么如果您的CPU支持amd64,它就不能以其他方式工作。

編輯:現在您強調自己沒有支持amd64的cpu,它會變得有些棘手。 從理論上講,您可以從源代碼重建gcc作為交叉編譯器。 實際上,這可能是太多的工作。 也許您只需花幾美元就能得到另一個無頭盒子,然后在上面安裝amd64?

查看pbuilder,它可以為許多架構創建構建環境, 此處提供一些說明

嘗試自己交叉編譯SDL,gmp和其他庫。 或從Debain軟件包中手動提取所需的文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM