●C/C++ 編譯器需要的環境變數設定

古早以來,PC 上的 C 編譯器,就需要兩個環境變數:

LIB:這個環境變數告訴編譯器說,必要的 libraries 在哪裡(哪個磁碟目錄下)
INCLUDE:告訴編譯器說,必要的 header files 在哪裡(哪個磁碟目錄下)

另外,為了讓我們能夠在任何 working directory 都叫得到編譯器,當然我們必須設定 PATH。

從古早以來,一直到現在,C/C++ 編譯器都需要這三個環境變數。


●以 Visual C++ 為例

以 Visual C++ 為例,如果安裝後的檔案佈局如下:

C:\MSDEV\VC98\BIN : 這裡放有編譯器 CL.EXE
C:\MSDEV\VC98\INCLUDE : 這裡放有 C/C++ header files
C:\MSDEV\VC98\LIB : 這裡放有 C/C++ standard libraries

那麼你可以寫一個批次檔如下:

set PATH=C:\MSDEV\VC98\BIN;C:\MSDEV\COMMON\MSDEV98\BIN
set INCLUDE=C:\MSDEV\VC98\INCLUDE
set LIB=C:\MSDEV\VC98\LIB

之所以需要另外設定 PATH=C:\MSDEV\COMMON\MSDEV98\BIN,是因為編譯器 CL.EXE 執行時需要 MSPDB60.DLL,而它被安裝於 C:\MSDEV\COMMON\MSDEV98\BIN 之中。

如果你寫的程式不只是單純的 C/C++ 程式,還用到了 MFC,一樣可以在 console mode 下編譯,這時候你的環境變數應該如此設定:

set PATH=C:\MSDEV\VC98\BIN;C:\MSDEV\COMMON\MSDEV98\BIN
set INCLUDE=C:\MSDEV\VC98\INCLUDE;C:\MSDEV\VC98\MFC\INCLUDE
set LIB=C:\MSDEV\VC98\LIB;C:\MSDEV\VC98\MFC\LIB

多指定了 MFC\INCLUDE 和 MFC\LIB,就可以讓編譯器和聯結器找到 MFC 的 header files 和 libraries。如果你還需要用到 ATL,就得在 INCLUDE 環境變數中再加上 C:\MSDEV\VC98\ATL\INCLUDE。


●環境空間(environment space)不足

最易造成大家困擾的,就是環境空間(environment space)不足的問題。

當你安裝好 Visual C++,會在其 BIN 子目錄中發現一個名為 VCVARS32.BAT 的檔案。這個檔案其實就是做上述的環境變數設定動作(這在 Visual C++ 安裝過程的最後一個步驟有說明。哎,有多少人安裝軟體不看說明!)。所以,你可以在任何 DOS Box 中執行此檔,取代前述我們自己的批次檔。

但是通常大家都有失敗的經驗,得到 "Out of environment space" 的錯誤訊息。這是因為 VCVARS32.BAT 使用以下句法:

set INCLUDE=%MSVCDir%\ATL\INCLUDE;%MSVCDir%\INCLUDE;%MSVCDir%\MFC\INCLUDE;%INCLUDE%
set LIB=%MSVCDir%\LIB;%MSVCDir%\MFC\LIB;%LIB%

意思是把 INCLUDE 的原始設定(%INCLUDE%)再附加其他設定,並把LIB 的原始設定(%LIB%)再附加其他設定。如果原始設定已經很長,多來這麼幾次,便 "Out of environment space" 啦!

做法之一是調高環境空間的大小。請在 c:\config.sys 檔中加上這行:

shell=C:\COMMAND.COM C:\ /E:1024 /P
arrow
arrow
    全站熱搜

    天才R 發表在 痞客邦 留言(0) 人氣()