[問題] 自行編譯cross compiler

看板LinuxDev作者 (海費爾)時間14年前 (2011/01/19 19:09), 編輯推噓4(4022)
留言26則, 6人參與, 最新討論串1/4 (看更多)
這二天我在編譯新的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

01/19 21:55, , 1F
check ISA version
01/19 21:55, 1F

01/19 23:02, , 2F
請問從哪邊去check ISA version?
01/19 23:02, 2F

01/20 00:01, , 3F
先 file 一下你的執行檔看是不是 for ARM 的.
01/20 00:01, 3F

01/20 00:53, , 4F
the message is:a.out: ELF 32-bit LSB executable,
01/20 00:53, 4F

01/20 00:53, , 5F
ARM, version 1, statically linked, not stripped
01/20 00:53, 5F

01/20 00:56, , 6F
看來應該有for ARM,接下來我該朝哪個方向去debug呢?
01/20 00:56, 6F

01/20 13:37, , 7F
你是照網頁教的用arm-elf-run ./hello來執行嗎?
01/20 13:37, 7F

01/20 15:03, , 8F
我覺得從一開始"更新toolchain"這件事就有問題..why?
01/20 15:03, 8F

01/20 15:04, , 9F
去讀ARM cp15的register就能獨到ARM version
01/20 15:04, 9F

01/20 16:54, , 10F
對,我是用arm-elf-run ./hello來執行,這樣是ok的
01/20 16:54, 10F

01/20 16:55, , 11F
後來我把hello執行檔傳送到板子執行卻是出錯的
01/20 16:55, 11F

01/20 16:57, , 12F
因為廠商所附贈的cross compiler不支援gcc的某些參數
01/20 16:57, 12F

01/20 16:57, , 13F
所以我才會想自行更新cross compiler
01/20 16:57, 13F

01/20 16:59, , 14F
s大不好意思,現在在板子上執行hello都有問題了,更不
01/20 16:59, 14F

01/20 16:59, , 15F
說是去讀register了@@
01/20 16:59, 15F

01/20 22:30, , 16F
你是放到板子上的linux跑嗎?如果是的話用arm-linux-gcc來編
01/20 22:30, 16F

01/20 22:39, , 17F
EABI的問題?不知道原本的tool-chain版本是多少?
01/20 22:39, 17F

01/20 22:41, , 18F
原po可以check一下kernel config裡面, Use the ARM EABI
01/20 22:41, 18F

01/20 22:42, , 19F
to compile the kernel這行有沒有被勾選,沒有的話把他開啟
01/20 22:42, 19F

01/20 22:43, , 20F
或者是用arm-linux-readelf -h 讀一下你的hello的header
01/20 22:43, 20F

01/20 22:44, , 21F
以及kernel的,看他們的Flag屬性是不是一樣...
01/20 22:44, 21F

01/20 22:47, , 22F
如果kernel跟userspace的ABI介面不一樣,userspace會有問題
01/20 22:47, 22F

01/21 01:16, , 23F
是的,hello是在host端做編譯,之後再把編譯出來的執
01/21 01:16, 23F

01/21 01:16, , 24F
行檔放到板子上的linux跑
01/21 01:16, 24F

01/21 01:19, , 25F
感謝樓上兩位的指導,等我回LAB我再check看看
01/21 01:19, 25F

01/21 11:09, , 26F
也不用run linux, 你有debugger的話用jtag讀就好了
01/21 11:09, 26F
文章代碼(AID): #1DDiPqlz (LinuxDev)
文章代碼(AID): #1DDiPqlz (LinuxDev)