歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux服務器

將VC程序移植到Linux系統的幾點經驗心得

 有時我需要制作LINUX與WINDOWS下都可以運行的程序。在一般情況下,我會選擇在WINDOWS平台下完成初始的開發。因為VC提供的圖形化的編輯與調試界面的確較GCC要高產得多。在完成了測試之後,就開始把它向LINUX移植,移植的過程會有一些需要注意的地方。

下面就是我的一些心得。

    文件名

    由於ext2文件系統對文件名是大小寫敏感的,當你在這種文件系統上進行編譯的時候,源文件中出現的#include 語句必須小心了。因為在VC環境下,由IDE自動生成的#include 語句,其中的文件名全部是小寫的。所以,你需要在一開始就注意這個問題,嚴格的使用大小寫敏感的文件名格式,避免在LINUX下編譯時出現找不到頭文件的錯誤。

    數據類型

    千萬不要使用VC獨有的數據類型,象__int16, __int32 和__int64 等等,你無法保證其它的編譯器能否支持它們。特別是__int64,它確實簡化了編程工作,但是當你的邏輯裡充滿了這樣的數據類型的時候,改動就變得無比困難了。還有一個問題就是,我們經常在VC中使用WORD,DWORD,INT,UINT這樣的擴展數據類型,不直接使用編譯器的數據類型有助於提高在不同平台之間的可移植性。但是LINUX下沒有定義這樣的類型啊?其實只需要將windows.h和basetypes.h中對這些數據進行定義的語句復制到一個頭文件中,再在linux下包括進來就行了。

    關鍵字

    關鍵字是比較好處理的東西,凡是VC中帶兩個下劃線的關鍵字,比方__asm都是VC獨有的。盡量不使用它們,如果實在無法避免,就用#ifdef 和#endif為LINUX和WINDOWS編寫兩個版本。

    MAKEFILE的編寫

    你可以先用VC導出一個makefile,然後對其進行修改,但我傾向於從中拷貝出一段來生成GCC的makefile,比起手工編寫要快許多。

    程序設計結構

    這絕對是移植過程中問題最大的一個部分。應用程序難免要用到操作系統的服務,如果完全使用標准的C/C++編寫,這將不是一個問題,但是當我們使用到多進/線程,管道,或者對WINDOWS圖形界面的程序進行移植的時候,這個問題就變得突出了。我們應當從設計上就為程序的移植打好基礎。

    解決這個問題首先必須搞清楚應用程序的邏輯模塊。對於這個模塊必須使用標准的C/C++進行編寫。同時將應用程序使用的線程數最小化,線程越多越難移植。將輸入輸出模塊獨立出來。最後劃分出控制模塊,這個模塊與用戶進行交互

Copyright © Linux教程網 All Rights Reserved