我遇到了_sbrk問題。在編譯的鏈接階段,我使用下面的命令來鏈接我的對象,並且我得到了_sbrk的未定義引用。未定義的對_sbrk的引用
arm-none-eabi-ld -static -T linkerscript.ld -o exe timer_example.o /home/ziga/projects/cs_lite/arm-none-eabi/lib/libc.a /home/ziga/projects/cs_lite/lib/gcc/arm-none-eabi/4.5.1/libgcc.a
我編譯爲ARM926EJ-S和ARM模式,所以我想我已經選擇了它位於文件夾主頁/ ziga /項目/ cs_lite/ARM正確的multilib(文件libc.a和libgcc.a中) -none-EABI/LIB /。
我一直在尋找_sbrk函數的互聯網,它是某種內存管理調用,它不包含在標準C庫中,因爲它依賴於微處理器。我是否必須自己寫_sbrk函數?我該怎麼做?你有任何arm926ej-s的例子嗎?在編寫這個函數後,我打算將它編譯成一個目標文件,並將它與其他對象,庫鏈接起來。
與善良的問候,Ziga。
我解決了這個問題,並且將在這裏發佈的解決方案,所以我回饋 comunity。函數_sbrk位於ARM的恩智浦CDL包內。包裝 可供下載(鏈接是所有誰不知道這已經)在這裏: http://www.lpclinux.com/Downloads/WebHome 在子文件夾CDL_v005 /電信運營商/ lpc313x /的BSP/ea3131 /來源,你會發現源文件 名爲libnosys_gnu.c應加入該項目並編譯爲對象 文件,之後鏈接到可執行文件以及其他對象和 庫。
祝願和許多成功。
你實際上應該把這個答案放在_answer_中,而不是編輯你的問題。回答自己的問題很好(甚至接受它)。 – paxdiablo 2011-04-23 23:26:10