![](/img/trans.png)
[英]How do I find out which functions of a shared object are used by a program or an other library?
[英]How do I create a library where the linker only links functions used by my program?
. 我正在編譯一個8位AVR微控制器的應用程序。 為了減少微控制器中的閃存使用, 鏈接器必須僅鏈接應用程序代碼使用的函數 。 我正在編寫自己的庫,我發現了以下聲明。
“為每個代碼模塊編寫一個函數。這將編譯為每個對象模塊一個函數” - 來源: http : //nongnu.org/avr-libc/user-manual/library.html
這是什么意思? 如何為每個函數創建單獨的目標文件? 現在我的庫中只有一個.h文件和一個.c文件。
“每個代碼模塊一個函數”表示每個C源文件一個函數。 這將為每個函數提供一個目標文件。
這看起來很尷尬,使用GCC時執行此操作的典型方法如下所述 :
-fdata-sections -ffunction-sections
選項進行編譯,告訴GCC將數據和函數放在不同的部分中。 截面只是目標文件中的一個概念,基本上是一個獨立的區域。 單個對象文件可以包含許多部分。 --gc-sections
,告訴鏈接器垃圾收集未使用的部分。 這將刪除死代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.