Re: [問題] 自行編譯cross compiler
※ 引述《JUSTLOVEAYU (海費爾)》之銘言:
: 標題: [問題] 自行編譯cross compiler
: 時間: Wed Jan 19 19:09:38 2011
:
: 這二天我在編譯新的cross compiler,因為我想把PXA270版子所附贈的toolchain做更新
:
: 我是按照以下網址做
:
: http://ccwang-jay.blogspot.com/2010/09/arm-gcc-toolchain-cross-compiler-for.html
:
: 剛剛終於搞定了
:
: 結果我把編譯好的程式(簡單的hello world)拿到PXA270版子上執行
:
: 結果顯示 Illegal Instruction,請問為什麼會這樣呢?我缺少什麼東西呢?
:
: 上面做出來的compiler不是全部嵌入式平台通用的compiler嗎?
:
: 有人可以指導我一下嗎?
:
: 謝謝!
:
: --
: ※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 140.125.45.103
: → dakiyo:check ISA version 01/19 21:55
: → JUSTLOVEAYU:請問從哪邊去check ISA version? 01/19 23:02
: → rawpacket:先 file 一下你的執行檔看是不是 for ARM 的. 01/20 00:01
: → JUSTLOVEAYU:the message is:a.out: ELF 32-bit LSB executable, 01/20 00:53
: → JUSTLOVEAYU:ARM, version 1, statically linked, not stripped 01/20 00:53
: → JUSTLOVEAYU:看來應該有for ARM,接下來我該朝哪個方向去debug呢? 01/20 00:56
: → badwork:你是照網頁教的用arm-elf-run ./hello來執行嗎? 01/20 13:37
: 推 shaopin:我覺得從一開始"更新toolchain"這件事就有問題..why? 01/20 15:03
: → shaopin:去讀ARM cp15的register就能獨到ARM version 01/20 15:04
: → JUSTLOVEAYU:對,我是用arm-elf-run ./hello來執行,這樣是ok的 01/20 16:54
: → JUSTLOVEAYU:後來我把hello執行檔傳送到板子執行卻是出錯的 01/20 16:55
: → JUSTLOVEAYU:因為廠商所附贈的cross compiler不支援gcc的某些參數 01/20 16:57
: → JUSTLOVEAYU:所以我才會想自行更新cross compiler 01/20 16:57
: → JUSTLOVEAYU:s大不好意思,現在在板子上執行hello都有問題了,更不 01/20 16:59
: → JUSTLOVEAYU:說是去讀register了@@ 01/20 16:59
: 推 dakiyo:你是放到板子上的linux跑嗎?如果是的話用arm-linux-gcc來編 01/20 22:30
: 推 askacis:EABI的問題?不知道原本的tool-chain版本是多少? 01/20 22:39
: → askacis:原po可以check一下kernel config裡面, Use the ARM EABI 01/20 22:41
: → askacis:to compile the kernel這行有沒有被勾選,沒有的話把他開啟 01/20 22:42
: → askacis:或者是用arm-linux-readelf -h 讀一下你的hello的header 01/20 22:43
: → askacis:以及kernel的,看他們的Flag屬性是不是一樣... 01/20 22:44
: → askacis:如果kernel跟userspace的ABI介面不一樣,userspace會有問題 01/20 22:47
: → JUSTLOVEAYU:是的,hello是在host端做編譯,之後再把編譯出來的執 01/21 01:16
: → JUSTLOVEAYU:行檔放到板子上的linux跑 01/21 01:16
: → JUSTLOVEAYU:感謝樓上兩位的指導,等我回LAB我再check看看 01/21 01:19
: 推 shaopin:也不用run linux, 你有debugger的話用jtag讀就好了 01/21 11:09
dakiyo大,目前系統並沒arm-linux-gcc,是否要去下載重新編譯呢?
askacis大,原本的toolchain版本是arm-linux-toolchain-bin.4.0.2
另外,請問kernel config要從哪面看呢?是在menuconfig那裡面看嗎(編譯kernel時)?
shaopin大,我沒有debugger 冏
剛剛,我把hello.c分別使用兩種不同的compiler去編譯,一個是廠商附贈的,
另一個是我自已編譯的,然後再用file指令去查看,我發現
使用附贈的compiler出現的訊息是:
ELF 32-bit LSB executable, ARM, version 1, dynamically linked (uses shared
libs), for GNU/Linux 2.4.3, not stripped
而使用我自已編的compiler出現的訊息是:
ELF 32-bit LSB executable, ARM, version 1, statically linked, not stripped
一個是dynamically linked另一個是statically linked
請問是不是這邊出現了問題呢?如果是的話,我該如何去修正呢?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.125.45.103
→
01/23 00:22, , 1F
01/23 00:22, 1F
→
01/23 00:24, , 2F
01/23 00:24, 2F
→
01/23 00:25, , 3F
01/23 00:25, 3F
→
01/23 00:27, , 4F
01/23 00:27, 4F
推
01/23 01:09, , 5F
01/23 01:09, 5F
→
01/23 01:09, , 6F
01/23 01:09, 6F
→
01/23 01:13, , 7F
01/23 01:13, 7F
推
01/23 01:16, , 8F
01/23 01:16, 8F
推
01/23 01:36, , 9F
01/23 01:36, 9F
推
01/23 01:43, , 10F
01/23 01:43, 10F
推
01/23 01:54, , 11F
01/23 01:54, 11F
→
01/23 01:54, , 12F
01/23 01:54, 12F
→
01/23 01:55, , 13F
01/23 01:55, 13F
→
01/23 01:56, , 14F
01/23 01:56, 14F
→
01/23 14:52, , 15F
01/23 14:52, 15F
→
01/23 14:53, , 16F
01/23 14:53, 16F
→
01/23 14:54, , 17F
01/23 14:54, 17F
→
01/23 14:56, , 18F
01/23 14:56, 18F
→
01/23 14:57, , 19F
01/23 14:57, 19F
→
01/23 14:58, , 20F
01/23 14:58, 20F
→
01/24 01:07, , 21F
01/24 01:07, 21F
→
01/24 01:08, , 22F
01/24 01:08, 22F
→
01/24 01:18, , 23F
01/24 01:18, 23F
→
01/24 01:19, , 24F
01/24 01:19, 24F
推
02/08 11:22, , 25F
02/08 11:22, 25F
→
02/08 11:23, , 26F
02/08 11:23, 26F
→
02/08 11:23, , 27F
02/08 11:23, 27F
→
02/08 11:24, , 28F
02/08 11:24, 28F
討論串 (同標題文章)
LinuxDev 近期熱門文章
PTT數位生活區 即時熱門文章