我很失望,因爲我找不到關於內存分段的信息。我知道我應該將內存劃分爲諸如.text,.data,.bss,.stack之類的基本部分,這些部分用於已編譯程序的目標文件中。我知道還有更多的其他章節,其中一些對C和C++來說是必需的。我正在搜索有關哪些部分應該包含在鏈接腳本中的信息?Cortex-M4的GNU鏈接描述文件中的內存段
0
A
回答
2
它取決於您的具體編譯器和目標架構哪些輸出節將出現或可能存在。在你的代碼中,你可以定義任意名稱的輸入節。鏈接描述文件用於將來自文件的符號或顯式定義的輸入節中列出的符號綁定到輸出節。
找出哪些輸出節存在的最好方法是編譯和鏈接示例應用程序,並檢查生成的映射文件(如果映射文件不是自動生成的,則應調整鏈接器選項)。地圖文件不適用於其他工具的使用,但可用作可讀描述,瞭解程序中的內容,位置,部分以及原因。注意:在該映射文件中,您還可以找到一些不屬於程序組成部分的名稱,並且不會將其轉換爲您的程序執行或使用的物理位,但對於您的調試器來說是相當有幫助的。
如果您沒有明確地將某些符號映射到輸出節,鏈接器通常會在最後一個顯式定義的節後添加所有剩餘的符號。
因此,您也可以定義某種'全部捕捉'部分,它肯定會吸引所有尚未分配的符號,然後驗證輸出部分是否仍爲空。 即
在你的部分終端模塊,添加
SECTION
{
<snip>
.mustbeempty
{
*(.*) ;
}
ASSERT(SIZEOF(.mustbeempty) = 0) ;
}
有關鏈接腳本
更多信息可以在很多地方找到:
- 在計算器上這已經被問過:Which man page describes ld linker script syntax?
- 完整的解釋可以在這個pdf中找到:https://web.eecs.umich.edu/~prabal/teaching/eecs373-f11/readings/Linker.pdf
- Red Hat已經很好地格式化網頁:https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/4/html/Using_ld_the_GNU_Linker/index.html
- 我用scoberlin很多這樣的頁面:http://www.scoberlin.de/content/media/http/informatik/gcc_docs/ld_3.html因爲整個LD文件的語法是一個完整的HTML頁面,因此可以很容易地被搜索到。
相關問題
- 1. 包含GNU ld鏈接描述文件的二進制文件
- 2. 使用ld鏈接描述文件沒有內存填充
- 3. GNU鏈接和鏈接描述:鏈接器不產生正確的LMA
- 4. 提取鏈接描述歸檔文件
- 5. GNU鏈接描述文件:選擇性運行地址(VMA)分配
- 6. 鏈接描述文件中段落的起始地址是否僅適用於虛擬內存
- 7. 將鏈接描述文件鏈接到源代碼
- 8. Android中的超鏈接市場描述
- 9. 保持SimplePie描述中的鏈接
- 10. 鏈接描述文件中的位置計數器(。)更新
- 11. 鏈接描述文件中的位置計數器
- 12. 鏈接描述被截斷
- 13. 創建GNU C文件描述符沒有文件句柄
- 14. 什麼形式的socket文件描述符在內存中?
- 15. 存儲字段描述
- 16. 用於調試信息的默認鏈接描述文件
- 17. 在鏈接中發佈標題,描述和鏈接的URL
- 18. 文件描述符和套接字文件描述符之間的區別
- 19. 如何添加鏈接的文字到Asana中的描述?
- 20. 連接時發生錯誤:鏈接描述文件
- 21. 在KML描述中添加FlyTo鏈接
- 22. 通過drupal 7查看原始內容的描述字段鏈接
- 23. 套接字描述符與文件描述符
- 24. 控制鏈接Facebook上共享的WordPress鏈接的描述
- 25. 添加描述從Excel文件到SQL中的列描述
- 26. 描述文本在文本字段中?
- 27. 無法打開鏈接描述文件libgcc_s.so.1:打開太多的文件
- 28. 段描述符與門描述符
- 29. SOCKET文件描述
- 30. 描述元素/屬性的XAML WPF文檔的鏈接
+1請問您可以擴展您的答案嗎?另外,您是否有鏈接瞭解更多關於鏈接器腳本的鏈接?謝謝。 – Sabuncu
另請參閱:http://stackoverflow.com/q/12763041/911550 – parvus