看板 LinuxDev 關於我們 聯絡資訊
※ 引述《typecommand (:))》之銘言: : 由於自學embedded system快要進入最後的階段了,由於我用的 : 板子是arm7tdmi + uclinux,該平台的特色是不能執行linux常 : 用的elf格式,一定要用其他工具轉成flt格式才能在上述的平 : 台上執行,小弟我看書上的範例執行了如下的指令 : arm-elf-ld -L/opt/uClinux/arm-elf/include -elf2flt -o hello : crt0.o crti.o hello.o crtn.o -lc -lgcc -lc (*.o我通通放在同個目錄) : 出現的訊息是cannot find -lgcc : 如果我把-lgcc拿掉,就會出現一連串的錯誤 : 想請問有那位大大有可以成功將elf轉成flt的經驗嗎?謝謝。 文章被m了,有點不好意思,另外在板上求助了很多人,我想也 該是到了回饋的時候了 通常elf和flt (flat)的差別是,flt去除了elf多餘的東西,因 為並不是所有的embedded平台都可以執行elf格式(細節可以自行google) ,之前我去參加Soc研習營,該廠商提供的平台是ARM10 + embedded linux 可以直接執行elf格式,我回家照做,卻不能執行,原因在於我的平台是 ARM7 + uclinux ,該平台和其他embedded system平台最大的不同在於沒 有MMU(我不太確定是不是non-MMU才可以執行flt格式,有錯請高手指正) 另外我請教了很多高手,我終於可以成功將elf轉成flt,我的步驟如下 1.先將source code編譯 arm-elf-gcc -c hello.c (成功後會出現hello.o這個檔案) 2.確定hello.o是否為elf格式可以執行 file hello.o 3.如果你的平台是有MMU,應該就可以直接執行elf格式,若沒有MMU請繼續看 4.將elf轉成flt arm-elf-ld -L/opt/uClinux/arm-elf/include -elf2flt -o hello /opt/uClinux/arm-elf/lib/crt0.o /opt/uClinux/arm-elf/lib/crti.o hello.o /opt/uClinux/arm-elf/lib/crtn.o /opt/uClinux/arm-elf/lib/libc.a /opt/uClinux/lib/gcc-lib/arm-elf/2.95.3/libgcc.a /opt/uClinux/arm-elf/lib/libc.a (以上路徑為我個人的路徑,若有不同請自行代換,另外以上的命令要連續打,不能 空行,空行是為了方便排版給大家看) 如果轉成功後,應該會出現hello這個執行檔,執行file hello,會出現 hello: data,而不會出現flt的格式,沒關係,用nfs的方式執行hello, 順利的話應該可以在板子上執行並出現hello world的訊息 就先到此為此,若有什麼遺漏或講錯,還請高手指正,謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.225.183.99 ※ 編輯: typecommand 來自: 125.225.183.99 (07/27 13:07)