Re: [問題X] Building a GNU/Linux ARM Toolchain …

看板LinuxDev作者 (zxvc)時間18年前 (2007/04/23 23:21), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《FFz (澎湖.仙人掌.234)》之銘言: : 我安裝好了,但是有一些疑問想請教各位 : 我是參照此教學的 : Building a GNU/Linux ARM Toolchain (from scratch) : http://www.schnozzle.org/~coldwell/toolchain/ : 底下想請各位幫忙解惑的地方有很多 : 麻煩各位幫個忙,謝謝 : 最底下有我的系統相關資訊 : 問題開始,先謝過了 : ------------------------------------------------------- : 原著在安裝Glibc時下 --build=i386-redhat-linux : 底下是我的安裝Glibc時設 --build=i686-linux : ../../glibc-2.3.5/configure : --prefix=${PREFIX}/${TARGET} : --host=arm-elf : --build=i686-linux : --enable-shared : --enable-add-ons=linuxthreads : --with-headers=${SYSROOT}/usr/include 2>&1 | tee configure.out : 可是我下 volname,得到 : Debian 3.1 r5 i386 Bin-1 : 那麼有差別嗎 : 還有,我電腦是用amd的,可是i686, i386是intel的架構 : 那有amd的參數值嗎? 這應該不是很大的問題,就我的經驗i386與i686差異不會很大。 : ------------------------------------------------------- : 請問,在安裝時gcc or glibc 都會填 --target, --host, --build, --prefix 部份有相關,例如在編gcc的時候要去找glibc的表頭檔, 這時候gcc的configure的--with-sysroot就不能設錯。 : 這兩者之間,的參數有相關嗎; glibc沒有 --target這個參數 ^^^^^^^^^^^^^^^^^^ glibc原始碼裡的INSTALL說明書是這樣說的: `--build=BUILD-SYSTEM' `--host=HOST-SYSTEM' These options are for cross-compiling. If you specify both options and BUILD-SYSTEM is different from HOST-SYSTEM, `configure' will prepare to cross-compile glibc from BUILD-SYSTEM to be used on HOST-SYSTEM. You'll probably need the `--with-headers' option too, and you may have to override CONFIGURE's selection of the compiler and/or binutils. : --prefix 這個參數是用來設定安裝的路徑嗎 ^^^^^^^^^^ 是的。不過詳細的路徑設定通常要看你解壓縮的原始碼裡的說明書。 : ------------------------------------------------------- : 關於,Building a GNU/Linux ARM Toolchain (from scratch) : (http://www.schnozzle.org/~coldwell/toolchain/) : 這篇教學,分成下列數個步聚 : 1.Setup : 2.Get the sources : 3.GNU binutils : 4.Linux Kernel Headers : 5.Glibc headers : 6.Stage 1 GCC : 7.GNU C Library : 8.Stage 2 GCC : 9.Linux Kernel Image : 而這篇教學是建立一 cross-compiler toolchain for ARM : 其中因為安裝glibc(step 7) 需要先有一 compiler : 所要先安裝一 c compiler(step 6) : 那麼,我問題一來了 : 為了安裝 glibc 而預先安裝的 c compiler : 是 for arm的嗎? : ------------------------------------------------------- : 問題二,我先假設,如果 c compiler不是 for arm的 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 這句話有點含糊。 你要表達的意思應該是這樣吧: 『如果 c compiler的target不是 for arm的』 (換句話說這個c compiler編出來的程式是不能在ARM上執行的。) 因為『如果 c compiler不是 for arm的』這句話的意思也可以是說: 有個c compiler不是在ARM上執行的 (換句話說這個c compiler不能在ARM上執行、編譯程式。) 的確有人把c compiler裝在ARM上執行, 不過我不清楚是怎麼辦到的。 : 那麼編譯出來的 glibc : 當 Stage 2 GCC ( step 8 ) 的 gcc : 在寫程式時要 include glibc 中的某函式庫 : 這樣到時編譯出來的程式會 for arm嗎 Stage 2 GCC在編譯cross gcc所用的編譯器是就是native gcc。 因為Stage 2 GCC是要編一個可以在你的x86電腦上run的cross compiler。 但這個cross compiler編出來的程式並不能直接在你電腦上run, 要丟到ARM機器上run,或者你可以用GDB/ARMulator模擬。 : ------------------------------------------------------- : 設定 $TARGET時 : TARGET = arm-elf : 或 : TARGET = arm-linux 有差嗎? 這個資訊可以在gcc原始碼資料夾找到說明書,例如: gcc-3.3.6/INSTALL/specific.html : ------------------------------------------------------- : 怎麼確認compiler所編出來的程式 : 能夠在某個架構上執行呢,例如:ARM 用file這個指令後面接執行檔可以查到一些資訊,例如: file a.out a.out: ELF 32-bit LSB executable, ARM, version 1, statically linked, not stripped : ------------------------------------------------------- : 此教學中 "Building a GNU/Linux ARM Toolchain (from scratch)" : 有一步聚是安裝 Stage 1 GCC : 以及最後一步驟安裝 Stage 2 GCC : 這兩個步驟是先安裝一gcc,在用此gcc來編譯另一個gcc ^^^^^^^^^^^^^^^^^^^^^^ 是的。 : 那麼這樣,可以同一版本的gcc,來編同一版本的gcc嗎 ^^^^^^^^^^^^^ ^^^^^^^^^^^^^ 這句話不是很懂。 你前面與後面的gcc分別是指那一個gcc? 是stage 1,還是stage 2,還是native gcc? : 或者是,兩者gcc都是不同版本嗎? : 最後最後,己經快一天半沒睡了.....先來休息一下 加油,有空多讀一點文件,才不會試得這麼辛苦。 (雖然有些問題可能讀了文件也不見得能解決 XD) : ====系統相關資訊==== : uname -nr : debian 2.4.27-3-386 : volname : Debian 3.1 r5 i386 Bin-1 : ====系統GCC相關資訊==== : dpkg -l gcc : ii gcc 3.3.5-3 The GNU C compiler : ====安裝程式相關資訊==== : binutils-2.16.tar.gz, linux-2.6.10.tar.gz, : glibc-linuxthreads-2.3.5.tar.gz, glibc-2.3.5.tar.gz, : gcc-3.4.4.tar.bz2, 2.6.10-at91.patch.gz, : 26_at91_serial.c.gz, flow.c.diff, : ioperm.c.diff, t-linux.diff, -- Albert Einstein : If there is any religion that could cope with modern scientific needs it would be Buddhism. 《金剛經》一切有為法 如夢幻泡影 如露亦如電 應作如是觀 http://web.cc.ncu.edu.tw/~93501025/jg.doc -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.200.121
文章代碼(AID): #16BCxhp4 (LinuxDev)
文章代碼(AID): #16BCxhp4 (LinuxDev)