關於 newlib 的問題想請教...

我們生活周遭存在太多太多的 embedded system ,過去 embedded system 有專屬的 OS,現在 linux 也可以應用在嵌入式環境,不過本版將廣泛討論所有嵌入式系統不只 linux 喔,歡迎有這方面經驗或有興趣的朋友一同進來討論。

版主: chester

關於 newlib 的問題想請教...

文章cyt » 週四 7月 22, 2004 1:09 pm

想嘗試 build newlib 來用
但是實在不確定 configure 的兩個參數 --target 和 --host
該怎麼用才對.

看了 README 我的了解是:

* 若我要在本機端(跑 linux 的 386 電腦)編譯newlib來用的話,
應該使用
configure --target=i386-pc-linux-gnu
這個指令即可 (?)

* 若我要在本機端(跑 linux 的 386 電腦)編譯newlib來給另一個系統
(eg, 跑 xos 的 xcpu 電腦), 則應該用
configure --host=xos --target=xcpu

請問一下, 是這樣用嗎?

還有 target 與 host 該怎麼解釋(用法)呢? target 指的是 cpu 而 host 指的是 os 嗎?
cyt
懵懂的國中生
懵懂的國中生
 
文章: 137
註冊時間: 週一 5月 31, 2004 2:20 pm

re:關於 newlib 的問題想請教...

文章阿信 » 週四 7月 22, 2004 1:44 pm

頭像
阿信
版面大總管
版面大總管
 
文章: 4756
註冊時間: 週二 9月 03, 2002 11:58 pm
來自: 台灣 - 嘉義

re:關於 newlib 的問題想請教...

文章cyt » 週四 7月 22, 2004 2:41 pm

謝謝阿信的回覆, 不過這似乎不是我要的...@__@
cyt
懵懂的國中生
懵懂的國中生
 
文章: 137
註冊時間: 週一 5月 31, 2004 2:20 pm

re:關於 newlib 的問題想請教...

文章roxin666 » 週四 7月 22, 2004 3:18 pm

1.
"--target" 是在編譯 binutils 和 gcc 這類屬於 toolchain 的東西時給的參數,
而且除非你是要編譯 cross-compiler,一般情況下編譯同屬於x86平台的 native-compiler
並不需要給這個參數。

"--host" 則是給一般函式庫和package所使用的參數,同樣的,除非是作 cross-compile,
一般情況下作 native-compile 並不需要特別給定這個參數。

簡單來講,"--target" 和 "--host" 是 exclusive 的,看你是要編譯 compiler 或是一般package
的 source code 而定。

newlib 的話,應該是給 "--host" 即可(如果是要作 cross compile的話)。


2.
所謂的 configuration name 一般是
cpu-manufacturer-os
ex:i686-pc-linux

至於各種不同平台的名稱最好是詢問相關的mailing list,另外 libtool 的 manual 中
有一個 tested platform 的列表可供參考。
http://www.gnu.org/software/libtool/manual.html#SEC64


以前的一點經驗,供作參考
圖克斯小舖 (Linux T-恤, 馬克杯)
http://www.tuxshop.idv.tw
頭像
roxin666
懵懂的國中生
懵懂的國中生
 
文章: 102
註冊時間: 週四 9月 25, 2003 11:19 pm

re:關於 newlib 的問題想請教...

文章cyt » 週四 7月 22, 2004 5:03 pm

非常感謝 roxin666 前輩的開示 :-D

我目前是想先把 newlib 當成一般的 library 來使用看看, 再跑跑看 README 中提到的 testsuite , 等搞清楚 newlib 怎麼用後, 才會玩到 cross-compiling 的部分, 只是我在 build 這邊就卡住了.

我所下的指令是:
#mkdir build-newlib
#cd build-newlib; mkdir install
#../configure --prefix=./install > log1 2>&1 (newlib src code 與 build-newlib 在同一層)
#make all install > log2 2>&1

完成後去 install 目錄看沒有 libc.a 之類的, build-newlib 裡面也沒有, 我沒有加 host 的參數, 不過 configure 的時候自動偵測為 i686-pc-linux-gnu, 這樣應該是ok的, 因為我沒有要做 cross-compile, 然後檢查 log2 , 發現不太對勁, 可是不知道怎麼解
XD , 我在網路上找到的文件都是這樣 build 起來的, README 裡也寫得很簡單, 可是作起來遇到問題還真不知道怎麼解決 :-?

log1: http://home.kimo.com.tw/cyt93ccucs/configure.html

log2: http://home.kimo.com.tw/cyt93ccucs/make.html
cyt
懵懂的國中生
懵懂的國中生
 
文章: 137
註冊時間: 週一 5月 31, 2004 2:20 pm

re:關於 newlib 的問題想請教...

文章roxin666 » 週四 7月 22, 2004 7:43 pm

cyt 寫:非常感謝 roxin666 前輩的開示 :-D


...好像我是老和尚.... :-?

1. for x86
#../configure --prefix=$install_path
#make all-target-newlib
#cd i686-pc-linux-gnu/newlib
#make install
#cd $install_path/i686-pc-linux-gnu

2. for ARM
#export CC=arm-linux-gcc
#export AS=arm-linux-as
#export LD=arm-linux-ld
#export AR=arm-linux-ar
#export RANLIB=arm-linux-ranlib
#export NM=arm-linux-nm
#../configure --prefix=$install_path --host=arm-linux
#make all-target-newlib
#cd arm-linux/newlib
#make install
#cd $install_path/arm-linux

There it is.

小弟因為用 debian unstable 的版本,gcc 有一點問題,
所以 x86 的版本編不起來,用arm-linux-gcc 2.95.4 作跨平台編譯則沒有問題。
我印象中x86 gcc比較穩的版本是 redhat7.3 + gcc-2.95
試看看吧!
圖克斯小舖 (Linux T-恤, 馬克杯)
http://www.tuxshop.idv.tw
頭像
roxin666
懵懂的國中生
懵懂的國中生
 
文章: 102
註冊時間: 週四 9月 25, 2003 11:19 pm

re:關於 newlib 的問題想請教...

文章cyt » 週五 7月 23, 2004 12:23 pm

roxin666 寫:...好像我是老和尚.... :-?

1. for x86
#../configure --prefix=$install_path
#make all-target-newlib
#cd i686-pc-linux-gnu/newlib
#make install
#cd $install_path/i686-pc-linux-gnu

小弟試了一下, 到 #make all-target-newlib 這一步時就有 error :
代碼: 選擇全部
In file included from /usr/include/linux/time.h:31,
                 from /usr/include/linux/stat.h:57,
                 from /root/build-newlib/i686-pc-linux-gnu/newlib/targ-include/sys/stat.h:11,
                 from ../../../../../newlib-1.12.0/newlib/libc/search/hash.c:44:
/usr/include/linux/spinlock.h: In function `bit_spin_unlock':
/usr/include/linux/spinlock.h:454: warning: asm operand 1 probably doesn't match constraints
In file included from /usr/include/linux/stat.h:57,
                 from /root/build-newlib/i686-pc-linux-gnu/newlib/targ-include/sys/stat.h:11,
                 from ../../../../../newlib-1.12.0/newlib/libc/search/hash.c:44:
/usr/include/linux/time.h: In function `timespec_to_jiffies':
/usr/include/linux/time.h:201: `u64' undeclared (first use in this function)
/usr/include/linux/time.h:201: (Each undeclared identifier is reported only once
/usr/include/linux/time.h:201: for each function it appears in.)
/usr/include/linux/time.h:205: parse error before `sec'
/usr/include/linux/time.h:205: parse error before `)'
/usr/include/linux/time.h:209: warning: control reaches end of non-void function
/usr/include/linux/time.h: In function `jiffies_to_timespec':
/usr/include/linux/time.h:218: `u64' undeclared (first use in this function)
/usr/include/linux/time.h:218: parse error before `nsec'
/usr/include/linux/time.h:219: `nsec' undeclared (first use in this function)
/usr/include/linux/time.h: In function `timeval_to_jiffies':
/usr/include/linux/time.h:240: `u64' undeclared (first use in this function)
/usr/include/linux/time.h:244: parse error before `sec'
/usr/include/linux/time.h:244: parse error before `)'
/usr/include/linux/time.h:247: warning: control reaches end of non-void function
/usr/include/linux/time.h: In function `jiffies_to_timeval':
/usr/include/linux/time.h:256: `u64' undeclared (first use in this function)
/usr/include/linux/time.h:256: parse error before `nsec'
/usr/include/linux/time.h:257: `nsec' undeclared (first use in this function)
make[4]: *** [hash.lo] Error 1
make[4]: Leaving directory `/root/build-newlib/i686-pc-linux-gnu/newlib/libc/search'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/root/build-newlib/i686-pc-linux-gnu/newlib/libc'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/root/build-newlib/i686-pc-linux-gnu/newlib'
make[1]: *** [all-recursive-am] Error 2
make[1]: Leaving directory `/root/build-newlib/i686-pc-linux-gnu/newlib'
make: *** [all-target-newlib] Error 2

看起來是 /usr/include/linux/time.h 的問題, 可是這個是系統裡面原本就有的, 都沒動過, 為什麼會這樣呢?
小弟是用 Debian 3.0r2 升級為 testing , gcc 是 2.95.4

roxin666 寫:小弟因為用 debian unstable 的版本,gcc 有一點問題,
所以 x86 的版本編不起來,用arm-linux-gcc 2.95.4 作跨平台編譯則沒有問題。
我印象中x86 gcc比較穩的版本是 redhat7.3 + gcc-2.95
試看看吧!


那如果想要在 Debian 中做 cross-compiling 的話, 用哪一個版本和 哪一個 gcc 版本搭配起來會比較好? 還有一個問題是, 為什麼跟 distro 會有關係呢?

謝謝 :)
cyt
懵懂的國中生
懵懂的國中生
 
文章: 137
註冊時間: 週一 5月 31, 2004 2:20 pm

re:關於 newlib 的問題想請教...

文章cyt » 週五 7月 23, 2004 2:34 pm

自問自答 :)

關於上面那個問題, 在 newlib 的 mailing list 找到可能的原因了, 可能是 glibc 的版本, 不過沒有確切的解法的樣子, 好像要 build x86 linux native newlib 來用有點麻煩 :-?

FYI: http://sources.redhat.com/ml/newlib/2004/msg00261.html
cyt
懵懂的國中生
懵懂的國中生
 
文章: 137
註冊時間: 週一 5月 31, 2004 2:20 pm

re:關於 newlib 的問題想請教...

文章flybird » 週一 7月 26, 2004 6:16 pm

roxin666 寫:1.

至於各種不同平台的名稱最好是詢問相關的mailing list,另外 libtool 的 manual 中
有一個 tested platform 的列表可供參考。
http://www.gnu.org/software/libtool/manual.html#SEC64


以前的一點經驗,供作參考


大大ㄚ
找不到arm <---有被支援嗎?
跟我使用 GNU-build-flow 重建glib的失敗是否有關?

然而 http://people.debian.org/~debacle/cross.html 的最後一段卻有做出glib arm-code 等會兒來追查看看差異何在
flybird
懵懂的國中生
懵懂的國中生
 
文章: 249
註冊時間: 週三 7月 07, 2004 4:40 pm
來自: ROT

文章rollboy » 週日 3月 12, 2006 6:24 pm

請問一下 ...
我試著自己編newlib來用

#./configure
#make all-target-newlib
make: Nothing to be done for `all-target-newlib'.

看起來它什麼事也不做? 是不是我少裝了什麼套件嗎?
測試過newlib-1.13.0跟newlib-1.14.0都一樣 :-?

請大家幫幫忙嘍 ... 謝謝
just for fun ...
rollboy
懵懂的國中生
懵懂的國中生
 
文章: 210
註冊時間: 週六 10月 11, 2003 4:47 pm
來自: chiayi


回到 embedded system

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客

cron