2012-01-27 94 views
4

對於大學課程我都要寫這應該在Linux和Windows上運行一個HTTP服務器。 我有一個不起眼的Linux機器,我不認爲可以處理任何類型的重虛擬環境中,無論是我願意去通過安裝它的麻煩。在Linux上建立一個開發環境,針對Linux和Windows

這是我的第一個項目足夠複雜(我估計〜.5個月就開發)需要足夠舒適的短編碼和測試會話(後者在兩個平臺上,當然)之間快速交替的環境。

所以,我想知道什麼可能是最好的設立這種情況。我認爲在Wine上進行測試是可以的(畢竟這不是現實世界中的事情),並且我爲Windows定位部分安裝了MinGW。

基本上,一個簡單的編寫良好的makefile可以解決我的問題......它應該構建Linux和Windows二進制文件並將它們放在各自的文件夾(Wine子樹中的Windows)中,而我全做完了!但是我對這件事情感覺很缺乏經驗,我真的不知道從哪裏開始。也許化妝手冊,AHAH!:)

想法,建議,什麼我沒想到/知道! 謝謝!

(PS。我打算使用emacs作爲編輯,也許學習VIM。除非日食提供某種天網般的插件是完全解決這個問題... :)

回答

1

你上正確的軌道。這並不複雜,真的,感謝MinGW。你基本上需要兩件事:

  1. 該代碼必須是可移植的跨操作系統。 MinGW有一些POSIX支持,但您可能需要使用Cygwin才能使用POSIX接口,或者有自己的兼容層來與操作系統連接。我可能會選擇Cygwin,因爲那樣你只能針對POSIX進行編碼,而不必測試和調試兼容層。另外,請確保您不會使用任何特定操作系統的外部庫。不可移植的代碼通常會導致編譯錯誤,但確保您無論如何都要徹底測試應用程序。

  2. 靶向Linux和Windows的工具鏈。你已經有了它們,你只需要正確地使用它們。通常情況下,在交叉編譯期間調用工具鏈時,您會使用像$(CROSS_COMPILE)這樣的變量作爲前綴。因此,在爲Linux編譯時,可以調用gcc,ld等(使CROSS_COMPILE變量爲空),並且在爲Windows編譯時調用例如i486-mingw32-gcc,i486-mingw32-ld等,即CROSS_COMPILE = i486-mingw32-。或者只是根據目標定義CC,LD等。

我在Linux上寫了一個小遊戲,並在Windows上運行。如果你使用browse the code,你可以看到代碼旁邊沒有#ifdef jungle(基本上只是爲Linux啓用了一些額外的調試功能),並且Makefile也很簡單,沒有複雜的交叉編譯處理,只是可以覆蓋CC等喜歡它應該是。由於許多重要的開源軟件都是以這種方式編寫的(特別是桌面和嵌入式設備使用的軟件),所以您還應該能夠找到許多關於如何正確設置構建環境的其他示例。至於在Windows上測試應用程序,我認爲最好的選擇是如果你能找到一個真正的Windows機器。如果你做的一切都正確,它應該像Linux一樣運行,你不需要在兩個操作系統上連續測試你的應用程序。如果在Windows機器上進行測試是不可能的,虛擬機將成爲下一個最佳選擇,但它可能會更難以設置。 Wine是一個很好的備份計劃,但如果您只在Wine上進行測試,我不認爲您可以確定您的應用程序在Windows上運行良好。

+0

從什麼時候MinGW爲Windows提供POSIX實現?參考?? – 2012-01-27 23:09:47

+0

你說得對,我把它和Cygwin混淆了。糾正。 – Antti 2012-01-27 23:24:02