1. gzyueqian
      13424082685
      首頁 > 新聞中心 > > 正文

      Cygwin下vivi和kernel編譯全攻略

      更新時間: 2007-01-24 15:56:28來源: 粵嵌教育瀏覽量:1011

        近打算設計新產品,在Friendly Arm買了一套Matrix5系統研究一下。發現用ARM-Linux開發似乎比較明智些!

        但用Windows習慣了,還不太熟悉Linux,而且重裝RH9恐怕很費事。還是先用Win2000吧,Linux熟悉熟悉再說!

        看見版上有個Cygwin,可以在Windows下建立仿Linux系統,下了一個試用一下,感覺還不錯,只可惜沒有圖形界面!

        根據楊老板所說,Cygwin里可以編譯Matrix5的vivi和kernel。就先以此開始熟悉Linux吧!

        大約用了一周左右的時間,終于搞定了vivi和kernel在Cygwin里的編譯。

        現在把編譯的過程貼出來,以供有相同感受的兄弟們參考:
       ?。ㄓ捎贑ygwin里操作全部使用行命令輸入方式,所以先熟悉一下Linux的常用命令)

        1、安裝Cygwin:

        安裝過程不多說了,開發中心里有參考。不過要提兩點:在系統比較干凈時安裝,建議系統剛啟動完就安裝,否則安裝可能會出錯;另外安裝時一定要裝gcc和ncurse庫,否則menuconfig用不了,如果搞不清就全部安裝吧!
         
        裝完Cygwin后會有一個快捷方式,運行它就可以進入Cygwin系統了。次進Cygwin系統還會有一些初始化過程,完了會進入命令輸入狀態,提示符為“<用戶名>@<計算機名>”。
         
        這里要先說明一下,Linux的文件系統是從/開始的,Cygwin系統的/就是在Windows里安裝Cygwin時選的安裝路徑(X:\cygwin)。如果想在Cygwin里訪問Windows的所有邏輯盤,到/cygdrive里找。比如Windows里的C:就是Cygwin里的/cygdrive/c 。這樣可以在Windows和Cygwin中交叉訪問文件,對于已經熟悉Windows操作的人來說是比較方便的。
         
        還有就是要注意Linux里是區分大小寫的,也就是說“file”和“FILE”不是同一個名字。尤其一些文件或目錄名中既有大寫字母也有小寫字母,注意不要輸錯!

        2、安裝arm-linux-gcc:
         
        這個安裝開發中心里也有,去下載一下解開就算安裝好了,注意要解到/opt目錄(Windows中的X:\cygwin\opt)下。
         
        修改啟動腳本/etc/profile文件(可在Windows中用文本編輯器修改X:\cygwin\etc\profile)中的PATH環境變量為
      PATH=/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/opt/FriendlyARM/crosstool/arm-linux/gcc-2.95.3-glibc-2.2.3/bin:$PATH
          gdbserver可以先不用,好象是Debug時才會用到。至少我在編譯時是沒用到。
         
        輸入“arm-linux-gcc -v”,自己測試一下吧。

        3、編譯VIVI:
         
        在開發中心已有較詳細的說明。一定要下載版上的“vivi_cygwin.tgz”,不要用光盤里的。預配置文件在包里已經有了(config.friendlyarm),不用再下載。
         
        由于VIVI要用到kernel的一些頭文件,所以需要kernel的源代碼,在光盤里“SBC-2410X/SBC-2410X-Linux/matrix5-kernel-v5.5.tgz”。將vivi和kernel都解到/friendly-arm下,即/friendly-arm/vivi和/friendly-arm/kernel里。然后需修改/friendly-arm/vivi/Makefile里的一些變量設置:

      LINUX_INCLUDE_DIR = /friendly-arm/kernel/include/
      CROSS_COMPILE   = arm-linux-
      ARM_GCC_LIBS     = /opt/FriendlyARM/crosstool/arm-linux/gcc-2.95.3-glibc-2.2.3/lib/gcc-lib/arm-linux/2.95.3
         
        三個變量在不同位置,自己找一下吧。其中前面兩個變量楊老板已經改好了,核對一下就可以了;注意第三個變量中FriendlyARM中間沒有減號,gcc-2.95.3-glibc-2.2.3中的g是小寫。

         
        為確保編譯的有效性,在編譯之前將vivi里所有的“*.o”和“*.o.flag”文件刪掉(本人曾經上過當)。
         
        進入/friendly-arm/vivi目錄里,輸入“make menuconfig”,開始選擇配置。可以Load也可以自己修改試試(不要亂選,有些選項是不能支持的)。注意Exit時一定要選“Yes”保存配置。
         
        再輸入“make”正式開始編譯,一會兒就完了。如果不報錯,在/friendly-arm/vivi里面就有你自己的“vivi”了。

        4、編譯kernel:
         
        這是痛苦的一步,開發中心里雖然有這個條目,但還沒放上去。只好自己摸,搞了好幾天。
         
        kernel的源程序在上面編譯vivi時已經解到/friendly-arm/kernel中了。因為這個程序包已在Linux中編譯過,有一些中間和目標代碼和Cygwin是不兼容的。必須先處理一下,否則不能正常進行編譯。
         
        首先,還是把kennel里所有的“*.o”和“*.o.flag”文件刪掉,以免不必要的麻煩。然后進入/friendly-arm/kernel目錄,可以輸一下“make menuconfig”試試。結果提示出錯。這是由于配置腳本已在Linux中編譯過,在scripts/lxdialog里產生了一個Linux下的可執行程序lxdialog。在Cygwin里這是個壞東西,它既不能執行,還會阻止可執行程序的生成。必須把它刪掉。類似的文件如下:

      /friendly-arm/kernel/scripts/lxdialog/lxdialog
      /friendly-arm/kernel/scripts/mkdep
      /friendly-arm/kernel/scripts/split-include
      /friendly-arm/kernel/drivers/char/conmakehash
      /friendly-arm/kernel/drivers/net/hamradio/soundmodem/gentbl

        這幾個文件必須刪掉,注意是沒有擴展名的文件,不要把源文件“*.c”刪掉!
         
        現在應該可以用“make menuconfig”進行配置了。這里的選項太多,先Load包里的config.friendly配置,待會兒再慢慢研究各個選項吧。同樣,Exit時一定要選“Yes”保存配置。
         
        下面可以開始編譯了。輸入“make zImage”,可以看見開始一個個模塊的編譯。但是過了一、二分鐘,就會報一個錯,大概是說“/friendly-arm/kernel/include/asm/arch/ide.h”沒找到。這個問題很奇怪,按理說頭文件丟失是個低級錯誤,不可能發現不了,不知道RH9中編譯是否也有同樣問題。可以這樣解決,從別的地方復制一個ide.h過來,只要其中有相應的兩個函數定義就可以了。比如:
      cp /friendly-arm/kernel/include/asm/arch-l7200/ide.h /friendly-arm/kernel/include/asm/arch/ide.h
         
        再執行“make zImage”應該可以完成編譯了。不過時間比較長,得要好幾分鐘。不報錯的話,在/friendly-arm/kernel/arch/arm/boot目錄里會生成你編譯的zImage 。
         
        接下來,也許你打算自己修改一下“make menuconfig”里的配置。這里有個比較麻煩的問題,你先把“/friendly-arm/kernel/.hdepend”這個文件備份一下。問題是這樣的:當你修改了某些比較關鍵的選項后,會提示你進行“make dep”。此時即使你直接進行“make zImage”,該過程亦會自動先運行。一旦執行到一個要生成“.hdepend”的命令時會提示命令參數太長。再看.hdepend已成了一個空文件。
         
        這個“.hdepend”真是個頭痛的問題,估計在RH9里應該沒這種事,否則這編譯根本進行不下去。開始想把Cygwin的設置改一下應該就可以了,可找了半天也沒找到有關的設置。求助楊工,倒是給了一個辦法,可還是不頂用。直到現在,這個問題仍沒有很好的解決。不過,把我自己用的兩個方法寫出來給大家參考一下:
         
        a)把備份好的“.hdepend”復制回來,修改“/friendly-arm/kernel/Makefile”,將其中一行“scripts/mkdep -- `find $(FINDHPATH) -name SCCS -prune -o -follow -name \*.h ! -name modversions.h -print` > .hdepend”的行首加一個“#”字符。實際上就是直接使用原有的“.hdepend”,編譯時跳過重新生成該文件。此法已經試過,是可以的。但有什么副作用不知道!
         
        b)仍然要把“Makefile”中生成“.hdepend”那一行去掉,換成下面三個命令行:

      scripts/mkdep -- `find $(HPATH)/asm -name SCCS -prune -o -follow -name \*.h ! -name modversions.h -print` > .hdepend
      scripts/mkdep -- `find $(HPATH)/linux -name SCCS -prune -o -follow -name \*.h ! -name modversions.h -print` >> .hdepend
      scripts/mkdep -- `find $(HPATH)/scsi $(HPATH)/net -name SCCS -prune -o -follow -name \*.h ! -name modversions.h -print` >> .hdepend

        注意三行前面都有一個TAB。當執行過“make dep”后還要手工修改一下“.hdepend”:查找“.PRECIOUS:”字樣引導的三段列表,將它們合并成一個“.PRECIOUS:”列表(列表頭上的“.PRECIOUS:”留著,中間兩個刪掉即可)并將列表放在文件尾上。然后再執行“make zImage”即可完成編譯。此法較麻煩,但可靠性高一點!

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 宅男宅女一区二区 | 亚洲激情视频欧美专区 | 一本大道香蕉中文在线视频一 | 亚洲中文字幕a∨在线 | 揄拍手机视频在线 | 在线欧美2222 |