2013-07-26 86 views
0

我目前不得不將用C編寫的Windows系統(和MinGW編譯器)項目改寫爲Linux系統。 我已閱讀有關交叉編譯,但它似乎沒有足夠的幫助我的情況,因爲我正在使用64位Windows機器,而我的Linux系統是32位。 另外,我在我的項目中有很多DLL調用,因爲這些DLL不一定在Linux上存在,所以會造成麻煩。 我想知道是否有人在StackOverlfow社區知道我如何解決(或至少緩解)我的問題。 預先感謝您將Windows項目調整到Linux系統

+0

你必須經過**很多**重構**。跨平臺應用程序必須從**開始**時刻記住這一點(否則您將只能使用非常少的代碼)。如果你沒有......那麼你現在可以做的不多,**耐心**和**重寫,以隔離系統特定的代碼**在單獨的庫/模塊中(您可以簡單地爲每個系統重寫)。使用**跨平臺庫**爲您提供一切(例如用於界面的QT,提升許多其他事物等等)。 –

+0

哦,我剛纔看到你用** linux-device-driver **標記了你的問題。如果你必須重寫一個**設備驅動程序**然後**忘記**來移植你的大部分代碼,在這個級別幾乎所有的東西都不一樣(只有你可以保存的東西是_algorithms_,但通常它們與特定系統稱你無法提取它們,並且你不會支付抽象的性能影響)。 –

+0

這太寬泛了。顯然你需要修改你的代碼,但只有你可以計算出需要完成的工作。 –

回答

3

如果您嘗試將Windows設備驅動程序移植到Linux,那麼您最好還是扔掉代碼。 Linux內核與Windows內核的工作方式非常不同。由於在內核編程中基本上沒有抽象,所以即使在Windows上使用Linux工具鏈,也無法制作跨平臺驅動程序。

Linux和Windows有完全不同的內核設計,這意味着您爲其中一個編寫的代碼根本無法工作。在Windows上嘗試編譯Linux用戶空間程序已經很困難,更不用說試圖將Windows驅動程序完全移植到Linux上。

0

謝謝大家爲你解答。實際上,我認爲這實際上不可能改變代碼(更重要的是,它甚至不僅僅是一個應用程序,而是針對特定電子板的特定驅動器的幾個.c和.h文件)。因此,我現在開始在Windows操作系統上測試代碼,然後我會看看我要用我的Linux系統做什麼...