1. 程式人生 > >關於CodeSourcery 和Sourcery G++

關於CodeSourcery 和Sourcery G++

以前在做android的時候經常回去CodeSourcery的網站上下載Sourcery G++ 的編譯器,也沒有太注意這個網站,只是認為這個是一個專門提供編譯器的網站。但是最近去下載編譯器的時候注意到網站變樣了,所以找了一下資料瞭解了一下這個公司。

  1. CodeSourcery公司(據說只有十幾個人)銷售GCC 相關服務,同時也賣GCC 周邊的低端程式設計元件。最近CodeSourcery公司宣佈將退出GCC 4.0,產生品質大幅提升的原始碼。
  2. 不少公司的toolchain都是外包給CodeSourcery的。例如MIPS與CodeSourcery合作推出MIPS開發環境:
  3. MIPS科技公司日前宣佈,為MIPS優化的一種基於GNU工具鏈和Eclipse IDE的完整C/C++開發環境Sourcery G++,現已由 CodeSourcery, Inc. 開始推出。該開發環境可支援所有MIPS,包括效能增強的MIPS32 24K核心和超標量體系結構MIPS32 74K核心,以及其他優化。它還為Linux應用增加了對非位置無關程式碼(non-position independent code)的支援,提高了Linux系統的效能。
  4. CodeSourcery公司的首席專家Mark Mitchell表示:“當可以低價獲得優化、商業用工具鏈時,開發商們越來越意識到花幾個星期的時間構建、整合和測試他們自己的GNU工具鏈已顯得沒有意義。我們非常高興與 MIPS 科技合作,推出MIPS開發商們需要的工具,使他們快速將產品推向市場。我們期待在未來開發和工具套件整合方面繼續與MIPS合作。”
  5. 專門為MIPS設計的Sourcery G++是一個基於GNU工具鏈的完整的軟體開發環境。Sourcery G++包括GNU C/C++ 編譯器、GNU彙編程式和聯結器、執行時間庫、原始碼級和彙編級偵錯程式、支援微處理器除錯介面(Microprocessor Debug Interface,MDI)與 MIPS 系統 Navigator探針和 MIPSsim模擬器的連線,另外還有可選的Eclipse-based IDE。Sourcery G++可以在Windows和Linux主機上執行,可用於採用Lite、個人和專業版的bare-iron和GNU/Linux的開發。專業版本的使用者可獲得來自CodeSourcery 的終身支援。
  6. Sourcery G++簡介:
  7. www.codesourcery.com 網站則有Sourcery G++詳細說明:
  8. Sourcery G++包含GNU C and C++ compilers,Eclipse IDE以及其他一些有用的東西。
  9. 支援Windows以及Linux平臺上開發。目標平臺已經有很多:
  10. ARM EABI
  11. ARM GNU/Linux
  12. ARM uClinux
  13. ColdFire ELF
  14. ColdFire GNU/Linux
  15. ColdFire uClinux
  16. fido ELF
  17. IA32 GNU/Linux
  18. IA32 Windows
  19. MIPS ELF
  20. MIPS GNU/Linux
  21. Nios II GNU/Linux
  22. Power EABI
  23. Power GNU/Linux
  24. Stellaris EABI
  25. SuperH GNU/Linux
  26. Download:
  27. 首先需要註冊,註冊完成後即可下載測試版。
  28. 選擇Host平臺,Target平臺即可。
  29. 安裝:
  30. 下載成功後,執行 sourceryg++-x.x.xx-mips-linux-gnu.bin
  31. 在GUI 下安裝成功。
  32. 需要licence. 選擇自動獲取,輸入使用者名稱,密碼即可。(如果沒有licence,則toolchain無法使用)
  33. 編譯器區分Big-endian,Little-endian.
  34. 在官方的Sourcery G++ IDE中。可以在建立工程時在setting Endianness時選擇Big-endian, Little-endian。
  35. 在直接使用其toolchain時,則可以用以下方法區分:
  36. -EL: Little-endian.
  37. 否則為Big-endian.
  38. Sam

  雖然據說用Codesourcery的編譯器對程式碼的效能有提升,但是使用的時候應該是也有技巧的,由於Codesourcery的arm編譯器沒有對armv4做出優化或者不太適合做為v4的ARM核(也可能是需要特殊的編譯配置選項),有時用它編譯出的S3C24x0的u-boot無法使用。

  對編譯原理和編譯器的瞭解對於產品的效能和安全性是有很大關係的。對於一個程式碼工作者來說也是非常重要的,必備的知識。 對於編譯器知識的重要性,可以用一個unix創始人Ken的小故事來說明:

  1. 說到Unix與C語言,還有一段小故事,當時安裝了Unix的PDP-11被放在貝爾實驗室供大家使用,有一天大傢伙發現Ken總是可以得到最高的 許可權輕鬆進入他們的帳戶,在貝爾實驗室這種高人云集的地方,這簡單是太不能容忍了,於是有若干高人跳了出來,仔細分析Unix程式碼,找到後門,修改後再重 新編譯整個Unix,當所有人都以為這個世界應該從此清靜了的時候,卻發現Ken還是很容易就取得了他們的帳戶許可權,為此大家鬱悶不已。直到很多年 後,Ken才道出其中的原委,原來程式碼裡確實存在後門,不過並不在Unix程式碼中,而是藏在編譯Unix的編譯器裡,每次編譯器編譯時就會自動加入後門代 碼,而當時整個貝爾實驗室都用的是Ken所寫的C編譯器。