背景包括GCC鏈接 - 指定存檔文件
我現在用的是GNU工具ARM嵌入式處理器編譯器,它是一個GCC編譯器的代碼輸出部分。我目前正在Windows環境中工作。
我正在構建一個比較大的項目,並且已經成功編譯了所有的源代碼,但在鏈接階段面臨挑戰。這個特定的平臺作爲兩個獨立的RAM區域,我需要將目標代碼的某些部分映射到特定區域。
我想我應該能夠使用連接器腳本,例如:
SECTIONS
{
ER_CCM 0x10000000:
{
* (.bss)
}
ER_SRAM 0x20000000:
{
someLib.obj (.bss)
}
}
不過,我的問題是,編譯器輸出的.lib,而不是.OBJ文件的文件(檔案)。該接頭用在所有的歸檔文件的當前目錄下面的語法被調用:
ld.exe --library-path=C:\SomePath\lib --Map C:\Somepath\bin\mapfile.map --script=C:\Somepath\bin\linkscript.ldf -(file1.lib file2.lib ... -)
即使.lib文件包含到.OBJ文件的引用,鏈接器抱怨說,它無法找到文件someLib.obj
可能是因爲它沒有提供完整的路徑來知道該映射所指的文件。
在鏈接器腳本中提供具有完整路徑的鏈接器也似乎不起作用;包含在指定目標文件中的符號仍然顯示在內存的第一部分中。
問題
是樣品鏈接腳本語法是否有效?第一部分中的通配符是否會阻止節部分中的指定文件映射正確?
如何指定鏈接器將某些目標文件範圍內的存檔文件映射到特定區域?這甚至有可能嗎?