2014-09-04 55 views
1

有沒有辦法在Windows中使用MingWCodeBlocks進行編譯,以便它們可以在Ubuntu或Centos發行版中使用?如何編譯Windows中的CodeBlocks MingW到Ubuntu或Centos

我試着用GNU GCC選項編譯,然後在obj/Release/文件夾下得到.o擴展名的輸出文件。

當我運行我在我的流浪的Ubuntu的機器得到這個錯誤:

-bash: ./main.o: cannot execute binary file

我怎麼編譯它,它運行在我的Linux機器?

回答

1

您要完成的技術術語是cross-compilation。爲此,您需要使用GCC源創建特定的交叉編譯器。如果你仍然想保留MinGW,有一個頁面可以解釋創建ARM交叉編譯器所需的步驟:http://www.mingw.org/wiki/HostedCrossCompilerHOWTO。 (你必須修改目標)的GCC所支持的目標

列表:

的ARMv5TE,Android的GCC的ARMv5TE-Linux的RVCT的ARMv5TE-Linux的GCC 的ARMv5TE-NONE-RVCT 的ARMv6 -darwin-GCC的ARMv6-Linux的RVCT的ARMv6-Linux的GCC 的ARMv6-NONE-RVCT 的ARMv7-Android的GCC的ARMv7-達爾文-GCC的ARMv7-Linux的RVCT 的ARMv7-Linux的GCC的ARMv7-NONE-RVCT mips32- linux-gcc ppc32-darwin8-gcc ppc32-darwin9-gcc ppc32-linux-gcc ppc64-darwin8-gcc ppc64-darwin9-gcc ppc64-linux-gcc sparc-solaris-gcc x86-android-gcc x86-darwin8-gcc x86-darwin8-icc x86-darwin9-gcc x86-darwin9-icc x86-darwin10-gcc x86-darwin11-gcc x86-darwin12-gcc x86 -linux-gcc x86-win32-vs9 x86_64-darwin9-gcc x86_64-x86-x86-x86-x86-x86-x86-x86-x86-x86-x86-x86-x86-x86-x86-x86-x86-x86-x86-x86-x86- darwin10-GCC x86_64的-darwin11-GCC x86_64的-darwin12-GCC x86_64的Linux的海灣合作委員會x86_64的Linux的-ICC x86_64的-Solaris的GCC x86_64的-Win64上-GCC x86_64的-Win64上-VS8 x86_64的-Win64上,VS9 萬向darwin8 -gcc universal-darwin9-gcc universal-darwin10-gcc universal-darwin11-gcc universal-darwin12-gcc generic-gnu

有一個大的警告:由於Windows不符合POSIX,我不認爲你可以使用signalspthreads

最後,要自己動手,因爲構建一個cx編譯器(大量晦澀的bug)是一項繁瑣的任務。這就是爲什麼profesionnal開發人員爲「​​plug'n'play」解決方案支付$$$的原因。

編輯:this MXE project能對你有用

+0

這是否意味着,如果我使用的代碼塊Ubuntu的版本我應該能夠沒有任何問題,在Linux服務器上運行在Ubuntu 12.04桌面編譯?也許我應該在Ubuntu下編譯這個呢? – 2014-09-04 13:58:12

+0

絕對!本機開發比xdev容易得多。但是,centOS與Ubuntu有點不同,所以你必須重新打包你的應用:http://askubuntu.com/questions/165643/are-centos-programs-compatible-with-ubuntu – lucasg 2014-09-04 14:03:15

+0

好的。我決定使用我的docker容器在CentOS 6.5下編譯它們,並安裝了Boost和GNU g ++。問題是,如何將包括頭文件在內的多個文件編譯成生產就緒機器代碼文件?他們是多個二進制文件還是一個?對不起,這是我第一次編譯生產使用 – 2014-09-04 14:15:28