2008-10-08 184 views
38

是否有交叉編譯從Linux到Windows中的C++應用程序手冊?從Linux到Windows交叉編譯C++應用程序的手冊?

這一點。我想要一些信息(鏈接,參考,例子...)來指導我做到這一點。

我甚至不知道它是否可能。

我的目標是在編譯的Linux程序,並得到我可以在Windows下運行.exe文件。

回答

51

的基礎是不是太困難:

sudo apt-get install mingw32  
cat > main.c <<EOF 
int main() 
{ 
    printf("Hello, World!"); 
} 
EOF 
i586-mingw32msvc-cc main.c -o hello.exe 

更換apt-getyum,或任何你的Linux發行版使用。這將爲Windows生成hello.exe

一旦你圍繞你的頭,你可以使用autotools,並設置CC=i586-mingw32msvc-cc

CC=i586-mingw32msvc-cc ./configure && make 

或者使用CMake and a toolchain file管理構建。更難的是添加本地交叉庫。通常它們存儲在/usr/cross/i586-mingw32msvc/{include,lib}中,您需要在構建過程的配置步驟中分別添加這些路徑。

+1

有一件事與此要注意的是,有些圖書館不喜歡交叉編譯。如果您的唯一選擇是.exe安裝程序和源代碼,則可能需要在wine下安裝該庫,然後將這些庫和標題複製到您的mingw搜索路徑中。我永遠不可能讓Boost交叉編譯 – Branan 2008-10-08 18:26:01

4

這取決於你是什麼意思(我真的不能說)。

  1. 如果你的意思是你想在Windows上使用現有的Linux應用程序,那麼你可以嘗試使用Windows上Cygwin它編譯。然而,這並不會給你的Windows從對Cygwin的所有依賴可執行免費(可執行文件仍取決於cygwin.dll文件) - 它仍然可能需要做一些移植之前,它會工作。見http://www.cygwin.com

  2. 如果您的意思是您希望能夠在Linux上執行Windows應用程序的實際編譯並生成可在Windows上執行的.exe文件 - 從而使用您的Linux機箱進行開發和/或編譯,那麼您應該查看針對Linux的MinGW,這是Linux上用於Windows的交叉編譯工具。請參閱http://www.mingw.org/wiki/LinuxCrossMinGW

此致敬禮!

4

我建議你試一下,GUB(Grand Unified Builder),因爲它交叉編譯幾個包及其依賴關係,並將它們組裝到當前11個體繫結構的單個安裝包中。您可以從here下載安裝預建的異在一個虛擬機,並按照源here。它目前可用於交叉編譯GNU LilyPond/GNU Denemo/Inkscape和OpenOffice.org。

目標架構:

  • 達爾文-PPC - 達爾文7 TAR.BZ2文件(的MacOS 10.3)/的PowerPC
  • 達爾文86 - 達爾文8(MacOS的10 TAR.BZ2文件。4)/ 86
  • 的mingw - 沙皮存檔用於Linux/x86_64的
  • 的Linux-PPC - - 用於Linux沙皮存檔用於Linux/86
  • Linux的64沙皮歸檔 - 用於WINDOWS32
  • 的linux 86的mingw可執行/ PowerPC的
  • FreeBSD的86 - 爲FreeBSD 4/86
  • 的FreeBSD-64沙皮歸檔 - 沙皮歸檔爲FreeBSD 6/x86_64的
  • 的cygwin - .tar.bz2格式包的Cygwin/WINDOWS32
  • 臂 - 沙皮檔案爲Linux/ARM(主要是未經測試)
  • 的debian - 適用於Debian(主要是未經測試)莎爾歸檔