linker-scripts

    2熱度

    1回答

    我正在使用ARM M0開發嵌入式系統的項目。 必須創建一個ROM應用程序,其唯一目的是將東西存儲在ROM中,並在需要時初始化數據和bss部分。 的loadscript到目前爲止是這樣的: MEMORY { rom (rx): ORIGIN = 0, LENGTH = 32K ; ram (!rx): ORIGIN = 0x10000, LENGTH = 8K ; } S

    2熱度

    1回答

    通常,通過使用KEEP(),即使符號未被引用,ld也會保留該節中的符號。但是,這不是我的經驗。如果沒有引用,我不能創建保留符號的ld linkerscript。 這是否有一些先決條件的工作?

    2熱度

    2回答

    我試着找到答案很長時間。對不起,但我真的找不到它。 我使用gcc,ld,gcc(彙編程序編譯)。 我寫劇本LD: SECTIONS { .text : *{.text} } LS_size = (SIZEOF(.text) + 2048) & (0xF800) >> 9 ; 我試着從彙編使用LS_size: _rom_size: .byte LS_size 它的做工精細,

    1熱度

    1回答

    在Linux上鍊接的可執行文件,我得到一個「未定義的引用」的錯誤是這樣的: undefined reference to `[email protected]_1.0' 我沒有「SOMELIB」的控制,但我有符號symbol在一個我自己的共享庫。我絕對相信[email protected]_1.0與我庫中的符號相同(提供的功能完全相同),實際上甚至源代碼也幾乎相同。 如何強制/別名[email

    0熱度

    1回答

    這與GNU鏈接器有關。如果我有一個不是.text,.data或.bss的部分,我該如何告訴鏈接器不要在這些部分中包含該部分。 例: SECTIONS { .text {} .data {} .bss {} .sec_var {} } 其實在我的情況sec_var有一定的全局變量,我不希望它成爲數據段的一部分,但在默認情況下連接器具有孤立區段的概念,因此試圖把該節。數據。由於這個原因

    2熱度

    2回答

    問題 我的問題是,當我使用它的目的是將代碼放到RAM以下腳本移居部分得到充斥着虛假數據。 我的問題是: 爲什麼比_etext符號越大_srelocate符號4個字節?他們不應該一樣嗎? 此外,如果1.的答案是NO,我不應該從_etext + 4複製到_srelocate? 背景和相關代碼 我與愛特梅爾ATSAM3N4X系列處理器(了ARM Cortex M3)合作,並希望與我的鏈接腳本和.relo

    0熱度

    1回答

    我很失望,因爲我找不到關於內存分段的信息。我知道我應該將內存劃分爲諸如.text,.data,.bss,.stack之類的基本部分,這些部分用於已編譯程序的目標文件中。我知道還有更多的其他章節,其中一些對C和C++來說是必需的。我正在搜索有關哪些部分應該包含在鏈接腳本中的信息?

    2熱度

    2回答

    我想在其內存部分末尾放置一個特定變量。 所以,如果我有: file1.cpp: __attribute__((section(".mysection"))) char var1[] = "var1"; 而在另一個file2.cpp: __attribute__((section(".mysection"))) char var2[] = "var2"; 我怎麼能強迫var2是在mysect

    2熱度

    1回答

    背景包括 我現在用的是GNU工具ARM嵌入式處理器編譯器,它是一個GCC編譯器的代碼輸出部分。我目前正在Windows環境中工作。 我正在構建一個比較大的項目,並且已經成功編譯了所有的源代碼,但在鏈接階段面臨挑戰。這個特定的平臺作爲兩個獨立的RAM區域,我需要將目標代碼的某些部分映射到特定區域。 我想我應該能夠使用連接器腳本,例如: SECTIONS { ER_CCM 0x100000

    4熱度

    2回答

    真的有兩個問題圍繞使用--add部分。簡單的就是標題。根據我的閱讀,我一直無法弄清楚如何執行--add-section。 要使用添加部分,我必須傳遞部分名稱。如果我使用現有的部分名稱,程序將以「無法添加部分'.data':格式錯誤的文件作爲響應。」也許我只需要傳遞另一個參數。如果我使用新的部分名稱,我寧願這樣做,但我會收到警告:「分配的部分」.blob「不在分段中。」 現在,我已經獲得了我的功能,