2011-12-07 96 views
1

我剛剛與lpcXpresso進行嵌入式系統開發。它使用改進的Eclise作爲其IDE和MCU C編譯器和MCU鏈接器。鏈接器錯誤:未定義引用'_fini'

我導入了一些存在的代碼,並且有一些鏈接器錯誤,我很快將它們整理出來。但最後一個有我難住了:

undefined reference to `_fini' 

我會認爲這意味着我的一些代碼調用一個名爲fini()功能 - 對嗎?

除了我沒有一個(admiteddly有InitialzeTracingSubsystem())。我不相信鏈接器會截斷這個名稱,因爲它早前抱怨過_getimeofday

任何想法我做錯了什麼?

回答

3

您沒有顯示您的命令行。我猜你已經直接使用了ld(鏈接器)。

不要這樣做。相反,總是使用編譯器驅動程序進行鏈接。

_init_fini通常的libc一部分,或隨之而來的C運行時啓動文件(crt0.ocrtend.o,等等)。

編譯器驅動程序將做必要的魔術鏈接它們。鏈接器不會。

+0

+1對不起,有一天需要回復。我相信問題是這個問題,但讓我困惑的是,它只有在我定義自己的#defines之一才能打開調試跟蹤時纔會出現,我將跟蹤日誌寫入文本文件。任何想法如何找到問題? – Mawg

+0

FWIW,我懷疑我的問題是在用於嵌入式系統的代碼中調用printf() – Mawg

+1

我在將一些代碼移植到嵌入式環境時遇到了同樣的問題。原來的代碼是調用exit(),最終導致_fini –