請閱讀【嵌入式開發(fā)學(xué)習(xí)必備專欄 之 ARM GCC 編譯專欄】
刪除lib中的某個(gè)文件
比如,如果要?jiǎng)h除 libc.a
靜態(tài)庫中的特定對象文件并重新使用這個(gè)靜態(tài)庫,在終端中可以使用 ar
命令。ar
是一個(gè)歸檔工具,它可以創(chuàng)建、修改、提取以及列出歸檔庫文件(如 .a
文件)的內(nèi)容。
下面是刪除 libc.a
中指定對象文件的步驟:
- 列出
libc.a
中的所有對象文件,以確認(rèn)要?jiǎng)h除的文件確實(shí)存在:
ar t libc.a
[02:32:10] (*^~^*) ~/sam/workbase/ra4m2/test$ ar -t libc.a
lib_a-_Exit.o
lib_a-__adjust.o
lib_a-__atexit.o
lib_a-__call_atexit.o
lib_a-__dprintf.o
lib_a-__exp10.o
lib_a-__ten_mu.o
lib_a-a64l.o
lib_a-abort.o
lib_a-abs.o
lib_a-access.o
lib_a-aeabi_atexit.o
lib_a-aeabi_memclr.o
lib_a-aeabi_memcpy-ar
...
- 使用
ar
命令從libc.a
中刪除指定的對象文件。你可以一次性刪除多個(gè)對象文件:
ar d libc.a lib_a-closer.o lib_a-fstatr.o lib_a-isattyr.o lib_a-lseekr.o lib_a-readr.o
- 再次列出
libc.a
的內(nèi)容以確認(rèn)對象文件已被刪除:
ar t libc.a
- (可選)如果你想驗(yàn)證刪除的對象文件是否會影響程序的鏈接,你可以嘗試重新鏈接你的程序:
gcc -o myprogram myprogram.c -L/path/to/lib -lc
其中 /path/to/lib
是 libc.a
所在目錄的路徑。
請注意,刪除靜態(tài)庫 libc.a
中的對象文件可能會導(dǎo)致鏈接時(shí)出現(xiàn)未定義的引用錯(cuò)誤,因?yàn)槟憧赡芤瞥顺绦蛞蕾嚨暮瘮?shù)。如果你的程序確實(shí)需要這些對象文件中定義的函數(shù),那么鏈接會失敗。在這種情況下,你需要確保這些函數(shù)的實(shí)現(xiàn)以其他方式提供,或者避免從庫中刪除這些對象文件。文章來源:http://www.zghlxwxcb.cn/news/detail-824929.html
此外,在修改系統(tǒng)級的 libc.a
靜態(tài)庫之前,建議創(chuàng)建一個(gè)備份。這樣,如果修改導(dǎo)致問題,你可以恢復(fù)原始的靜態(tài)庫。如果不是必要的,通常不建議修改系統(tǒng)級的庫,而是應(yīng)該創(chuàng)建并使用自定義的靜態(tài)庫。文章來源地址http://www.zghlxwxcb.cn/news/detail-824929.html
到了這里,關(guān)于【ARM 嵌入式 編譯系列 3.6 -- 刪除lib中的某個(gè)文件】的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!