KEIL uVersion Link Error

Compile 時最後碰到這個問題.

這是在 C 中去 Link C++ 的 Code 產生的.

[TEXT]
linking…
.\Obj\Memory.axf: Error: L6218E: Undefined symbol __aeabi_unwind_cpp_pr0 (referred from array_new.o).
.\Obj\Memory.axf: Error: L6218E: Undefined symbol __rt_new_handler_addr (referred from new.o).
.\Obj\Memory.axf: Error: L6218E: Undefined symbol abort (referred from arm_exceptions_terminate.o).
.\Obj\Memory.axf: Error: L6218E: Undefined symbol __rt_eh_globals_addr (referred from arm_exceptions_globs.o).
Target not created
[/TEXT]

解決方法就是 Option -> Target -> Use MicroLib 關掉.

如果要引入一些標準的 C Library, 也不能使用 MicroLib .
像是要初始化 Heap , _init_alloc 也是要關掉 MicroLib 的支援.

註:
當使用 malloc 時, 會去 heap 取得一塊 memory 給程式使用, 但是
Keil 本身並沒有 heap 的管理機制, 要指定一塊 memory 給 heap 用.
這時就要先 initial heap, 要使用 _init_alloc 這個 function 才可以 allocate .

Ref.
MicroLib

On this day..

Comments

comments

Related Posts
  1. Using Mozilla Firefox Mozilla Firefox 11.0 on Ubuntu Linux Ubuntu Linux

    主要是 C++ exception handling 預設參數不匹配的緣故

  2. Using Google Chrome Google Chrome 17.0.963.56 on Windows Windows 7

    看起來不止, 連 malloc 也沒有.

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>