Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 3380|回復: 0
打印 上一主題 下一主題

在大陸網站找的資料~~2

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-4-29 12:24:56 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
根據網上的資源介紹, 成功的telnet登錄到了小I內部, 但是發現shell只有一個ash, 用起來非常的不爽,於是想自己弄個bash用,先是參考了OopsWare大蝦的文章:http://club.ccmove.com/nclub/top ... &TopicID=397292, 整個編譯的過程很順利, 編譯好以後用生成的arm-softfloat-linux-gnu-gcc編譯了一個簡單的hello,world程序,傳到小I上運行, 一切正常!於是開始編譯bash 3.1, 編譯成功後把生成的bash傳到小I, 可是運行的時候問題出來了,運行的時候顯示:( {' ~# s7 v, r, b+ J
# ./bash
9 d+ d; i: H( J  N7 |2 D3 r; sIllegal instruction& L" m# Y5 N$ h& p! V4 E
搞了一下午始終沒有找到原因.6 N4 G5 S& |- h  c7 w, `

7 m2 V5 U4 |: ]5 U- L0 h後來在電驢上發現了一個編譯好的包:arm-linux-toolchain-cygwin-3.4.3.tar.gz,有86.4M: e1 F" p$ |" |* ^0 b" I2 {
(該文件可以在eMule裡面搜索/下載)0 g7 H8 w( l: C& e: [
經測試可以正常交叉編譯arm-linux程序,編譯好的程序在小I上也可以正常運行.
/ e2 A) \( v; X1 t4 s, E% T6 f" M
0 _0 Y/ Y3 q7 ~# Y$ K安裝的步驟如下假設cygwin安裝在c:/cygwin,下載的包放在c:/tmp)
4 H" R( h  v1 q: s  j3 d1. 在 c:/tmp 下運行:
3 Y* D1 c$ j$ E- b/ gtar xvfz arm-linux-toolchain-cygwin-3.4.3.tar.gz
' U2 m" W' J9 ~6 g; e- D然後在tmp下會生成一個目錄usr,下面有如下子目錄:1 q2 ~7 l7 F  _( _" p
arm-linux/  bin/  include/  info/  lib/  libexec/  man/  share/
3 E( |/ b- Y+ Y9 O5 ]1 h
1 x) e5 w9 P: s- G5 D2.把c:/tmp/usr/bin下的所有文件拷貝(或移動)到c:/cygwin/bin;
0 r5 i6 a6 _" n把c:/tmp/usr/lib下的所有文件拷貝(或移動)到c:/cygwin/lib;
4 x2 g# \( H$ f9 }0 u4 ]2 B, [把arm-linux/ include/ info/ libexec/  man/  share/$ Z- t% V( c& @) \3 ^$ B
幾個目錄拷貝(或移動)到c:/cygwin/usr目錄下,拷貝過程中如果詢問是否覆蓋選擇全是.
  K8 M' @, D! A$ d
% K9 U9 {1 C8 C& [% c: C# {3.這時候運行arm-linux-gcc就可以編譯arm-linux的執行文件了,該包還帶了一個arm的模擬器; M( O6 `- [* k5 c5 B
armv5l-linux-run,但是我沒有運行成功.% O4 P  E* ~( c+ C/ d: j

, g' Y. y  j3 ?) n: T. V6 c. {: g4.以bash 3.1為例介紹一下arm-linux軟件的編譯過程:
; O6 L, d. `' ~- G/ }- }! G  [1)在ftp://ftp.gnu.org/pub/gnu/bash下載bash-3.1.tar.gz.6 x( F0 `% _0 f" K
2)執行下列命令:( E2 ]5 U' T! B& F) p
tar xvfz bash-3.1.tar.gz
- r7 b1 F6 f4 v& P! Scd bash-3.1
  f+ {& f. @6 D./configure --host=arm-linux (configure要簡單處理一下:刪除行9983到行10042間的內容)( @; W* W7 [/ z- r& F
make4 A" E" @2 S- D) P+ ~" m
2 a1 Y% w, b" t; F% M8 R) ~
3)編譯完成後會生成arm-linux的執行文件bash,運行命令:
8 w/ ?+ n$ ~, M  Mfile bash
2 z! V, K2 ~  d  q* V) f9 o顯示
) M& @* Q. Q, X, Fbash: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped
* K# ?5 P# F- J4 t) h5 I7 Y證明編譯成功
! m, O+ [/ Y# _/ `# I7 s! a# @1 o# ~- n' u9 D$ O5 ~
4)運行arm-linux-strip bash, 去除不必要的符號信息,可以使編譯好的bash文件大小從3M多減少到600多k.: _2 m3 \/ G9 p+ f

+ B: w" r) M. t2 G+ a" n5)把編譯好的bash上傳到小I上就可以運行了.' d" b) t& i  T
3 Q- _; Z; p( O9 i& I5 ?: ]4 o2 d

2 w5 z' \, O$ ?4 s. V& a8 g進一步的想法:能否用busybox(http://www.busybox.net/)來代替小I! R. i1 h9 O+ y- R2 [
/bin /usr/bin /sbin /usr/sbin目錄中的命令文件,這樣可以節省出幾M的空間?# L7 c( P  y& R* g/ c
. }; r7 i1 F8 K8 v) w6 j2 c, u
+ K3 N; i" ?2 }
--------------------------------------------------------------------------------! F9 |2 v" x: }4 \: R* E% d
從電驢上下那個arm-linux-toolchain-cygwin-3.4.3.tar.gz用了幾天以後發現還是有問題,
8 n# Y+ F4 W1 i雖然能夠正常編譯,編譯出來也能正常運行,但是只要一涉及浮點數有關的處理, 出來的結果$ M/ u2 z3 W; L( \6 ?8 Q
完全是錯誤的,比如我用busybox替換了系統的df,運行的時候結果如下:- F8 J& ~5 k. L# R* w) Q1 o- [
~#df -h! z3 {% s( k6 z& Q
Filesystem                Size      Used Available Use% Mounted on" L5 \' Q9 O- S$ r2 D  `9 O
/dev/tffsa           64424509455.4M 64424509455.4M         0 100% /usr/language* ~+ c  F: k- v
/dev/roflash2        1786706395552.0k 1786706395552.0k         0 100% /usr/setup3 e4 f1 l: m; H3 y' v3 Z. m4 J/ @2 P# M- R
/dev/mtdblock2       21474836485.2M 4294967297.8M 12884901891.4M  34% /ezxlocal
. o+ _2 `5 b; G: ?/dev/mmca1           4088808866744.7M 996432412904.4M 3092376453840.3M  24% /mmc/mmca1
/ v- i2 O5 `# k6 x/dev/tffsb1          201863462959.9M 12884901891.8M 188978561068.1M   8% /diska8 `9 f/ ^" X) R- e" G$ Q. v
/dev/loop0           223338299444.3M 223338299444.3M         0 100% /ezxlocal/opie
6 w% r  p, H5 n) Z估計是這個包在編譯的時候沒有加進軟件模擬浮點處理器支持, 而小I本身沒有硬件的浮點處理器.
9 v7 e3 ]9 n6 }8 k* C沒辦法, 還是只得自己動手編譯了, 後來又查了些資料,做了些實驗, 發現自己動手編譯建立toolchain最簡單的方法如下:
1 K- H. |0 \; r+ c0 H& h
3 s, r  Q* z) o9 t! [7 I0 j第1步.準備工作,下載如下軟件包:( b" B* T' s# Q4 Q/ `, }
http://lsb.blogdns.net/ezx-crosstool下載ezx-crosstool-0.5.tar.bz2 ( E, ?- \8 U. A$ F! C

4 |$ l/ S" H3 h3 B3 h3 w3 L0 rftp://ftp.gnu.org/pub/gnu 下載如下包  b/ A/ P) H4 `9 n
binutils-2.15.tar.bz2 glibc-2.3.2.tar.bz2: i9 \* v0 O4 ?& \1 ]
gcc-3.3.6.tar.bz2 glibc-linuxthreads-2.3.2.tar.bz2& B% d+ {3 z- F4 ?

, u( a, g7 [/ B* T" X( u' Ihttp://www.kernel.org/pub/linux/kernel/v2.4/ 下載
3 }7 i; T6 z! U7 S3 [linux-2.4.26.tar.bz2
2 x5 B1 n, G7 X' v& b
" _; ?" d% {, Z0 A以上幾個包只有第一個是必須的, 後面幾個編譯的時候如果沒有會自動下載,如果你網速夠快的話3 f" t6 i- L. v$ o! r" ^
就可以先不用下載
" A, p8 s) [- n5 L" U! s9 ]' X1 g/ n
$ b8 h9 S6 p0 l  r第2步.把下載來的ezx-crosstool-0.5.tar.bz2解包:) t2 U: f/ Z8 e7 G2 F% M6 Y9 z+ r
tar xvfj ezx-crosstool-0.5.tar.bz2
! x0 t, s$ i& B. Y會生成一個ezx-crosstool-0.5目錄, 然後把預先下載的:* T: S7 w2 n6 a5 ^6 E$ u4 y% V1 N" b; g
binutils-2.15.tar.bz2  glibc-2.3.2.tar.bz2                linux-2.4.26.tar.bz23 K7 I+ W+ ]7 H$ C: d" v; j/ K* t
gcc-3.3.6.tar.bz2       glibc-linuxthreads-2.3.2.tar.bz2# W# C7 T- {' E7 K- d
拷貝到ezx-crosstool-0.5目錄的子目錄下(沒有預先下載則跳過此步).
9 m9 R& Z$ W9 a) D2 {2 ~/ N7 [
; i( A9 c; {- O4 t3 {3 u! d第3步.編輯ezx-crosstool-0.5目錄下的build.sh文件,把第5行:, `4 s; T/ l: p
RESULT_TOP=$CROSSTOOL_DIR/gcc-arm-iwmmxt; F# O( W/ S: H4 Z/ {+ Q
改成你想要的安裝位置,比如要安裝在/usr/arm就改成:
5 X8 W/ r% ^. U; ~+ dRESULT_TOP=/usr/arm  w; l( e* K* ^: v3 E1 P2 ]) X
, L: Z. P+ _/ s) P# G+ p( W
第4步.最後一步,也是最費時間的一步:1 T1 z/ \# Y+ t. k8 W) y5 s8 N4 D$ S
在ezx-crosstool-0.5目錄下運行:% y" B. Z1 L! w6 C2 T4 @
./build.sh
/ I4 Y% }% F5 T0 S' r! c( I3 k4 \* l) _1 C
然後就慢慢等吧...0 S( ^. f1 F" G3 m
整個過程在我的機器上大概用了兩個來小時.我的機配是XP2600+ , 1G ram

評分

參與人數 1Chipcoin +3 +3 收起 理由
masonchung + 3 + 3 感謝經驗分享!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

首頁|手機版|Chip123 科技應用創新平台 |新契機國際商機整合股份有限公司

GMT+8, 2024-4-28 10:16 PM , Processed in 0.109006 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表