2009-09-01 125 views
2

我想無需任何操作系統運行的PowerPC嵌入式系統的一個簡單的程序。我正在使用GNU編譯器 - 鏈接器工具和PSIM作爲模擬器。我寫了自己非常簡單的鏈接器指令文件。如何防止動態重定位(rela.dyn)?

我用一個全局變量在我的靜態庫,並希望使用該變量在我的示例程序。但是,鏈接示例程序GNU ld會給出錯誤並停止。它說它在鏈接器指令文件中找不到rela.dyn。其實我不想使用動態可重定位庫,因爲我沒有動態加載器。我究竟做錯了什麼?

+1

我用-nostartfiles -nodefaultlibs -nostdlib -static標誌,同時連接。 - 不需要共享標誌,這是不適合我的應用程序 – 2009-09-03 12:53:27

回答

0

很難說沒有更多的信息。如果您沒有底層操作系統,您是否使用「 - 」來避免在平臺運行時鏈接?

編輯: -ffreestanding需要-shared? - 用於編譯到非託管環境的便捷手段。這樣的環境如何支持共享庫?

+0

其實它,我已經嘗試過,看到結果... – 2009-09-11 13:41:46

+0

有趣。我在這一點上退出( - 不應該那樣做,但我沒有在你的特定平臺上工作,所以我不能真正判斷);也許遵循James Molloy的建議(ld -v)會讓你更進一步。 – DevSolar 2009-09-11 14:43:21

+0

應該有一個反對投票的規則,不要留下評論,認爲答案中哪些內容沒有用。 : - / – DevSolar 2009-10-06 10:09:05

0

-ffreestanding,太陽說。如果失敗,請使用--verbose選項運行ld以查看它正在嘗試鏈接的內容:這將使您能夠進一步調試。