歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> 關於Unix >> SCO OpenServer下編譯及使用GCC 3.0

SCO OpenServer下編譯及使用GCC 3.0

日期:2017/2/28 11:23:09   编辑:關於Unix


1. 說明
  本文檔適用於在SCO 5.0.6下編譯及使用gcc-3.0及gcc-3.0.x。同樣的方法也可用於編譯gcc-2.95.x、gcc-3.2.x、gcc-3.3。本文以gcc-3.0為例說明gcc的編譯過程和使用中的部分注意點。
2. 源碼的下載
3. 編譯前准備
3.1. 操作系統補丁
  在SCO OpenServer 5.0.6下編譯gcc-3.0不需要打操作系統補丁。如打了OSS646C後編譯過程有可能出錯。
3.2. 安裝GNU Make
  使用SCO開發環境自帶的make編譯gcc時會因為對Makefile中的某些語法無法解析而導致編譯失敗,因此需要以GNU Make來進行編譯。
  首先,從GNU官方網站下載GNU Make的源碼(目前的最高版本是3.80),在SCO下編譯生成make執行碼,然後用此執行碼替換/bin/make。
4. 配置
  為了避免由於誤操作破壞gcc的源碼,一般將gcc的配置和編譯在另外的目錄下進行。
  在/usr/test下創建gcctmp目錄。進入gcctmp目錄,執行以下命令:
../gcc-3.0/configure --prefix=/usr/local/gcc-3.0
  prefix所表示的是gcc的安裝目錄。在不使用此參數時,缺省的安裝目錄是/usr/local。如果可能安裝多個版本的gcc,最好將不同版本的gcc安裝至不同的目錄下。
  configure還有許多其他的編譯選項,在配置前可以仔細閱讀一下INSTALL目錄下的文檔,根據需要打開或關閉某些選項。
5. 編譯
在gcctmp下執行
make bootstrap
由於gcc系統比較龐大,編譯需要較長的時間。
6. 安裝
在成功完成gcc的編譯後,用su命令切換至root用戶,執行
make install
將gcc安裝至/usr/local/gcc-3.0目錄下。
7. 安裝後的驗證
將gcc的安裝路徑加入執行路徑:
PATH=/usr/local/gcc-3.0/bin:$PATH; export PATH
執行gcc -v,提示以下信息:
Reading specs from /usr/local/gcc-3.0/lib/gcc-lib/i386-pc-sco3.2v5.0.6/3.0/specs
Configured with: ../gcc-3.0/configure --prefix=/usr/local/gcc-3.0
Thread model: single
gcc version 3.0
就說明gcc已經編譯、安裝完成,可以用來進行程序的開發了。恭喜你!
8. -belf和-bcoff的兼容
在SCO平台下編譯的程序有時需要使用elf或coff格式,這一功能是通過-belf和-bcoff編譯選項來控制的。
至遲從gcc-2.95.x起,在gcc官方文檔中都會有這樣一段關於SCO平台的聲明(詳見Host/Target specific installation notes for GCC):
Unlike earlier versions of GCC, the ability to generate COFF
with this target is no longer provided.
因此,不要指望gcc能在SCO下生成coff格式的二進制碼。更糟的是gcc在SCO OpenServer下運行時如果加上-belf或-bcoff選項會報以下的錯誤:
gcc: installation problem, cannot exec `cc1': No such file or directory
並由此而導致一些軟件包的配置和編譯出錯。
網上有許多關於這方面的提問,但很少有人回答。其實解決的辦法很簡單:
1. 以root用戶登錄,進入/usr/local/gcc-3.0/lib/gcc-lib
2. ln -s i386-pc-sco3.2v5.0.6 elf
ln -s i386-pc-sco3.2v5.0.6 coff
完成上面的操作後,就可以正常使用-b選項了。
當然,我們的目的不是為了生成elf格式或coff格式的二進制碼(在使用-belf和-bcoff時生成的代碼完全相同),而是在使用了-b選項時不至於出錯。
此方法也可用於gcc-2.95.x以及其它版本。
Copyright © Linux教程網 All Rights Reserved