天天看點

靜态庫連結(程式員的自我修養)

要點1:在我們做linux或windows開發時,通常會用到C語言,C語言帶有自己的庫glibc.這個庫的API為我們編寫程式,實作功能提供友善。這個庫中,有些庫函數調用了作業系統的API(例如printf),有些則沒有(例如strlen)。

要點2:可以将靜态庫看做是一組目标檔案的集合。每個目标檔案對應一個庫的函數。例如在linux中,C的靜态庫在/usr/lib/libc.a。

要點3:已知libc.a中每個函數對應一個目标檔案,将這些.o檔案用ar壓縮并索引後,變成了libc.a檔案。

要點4:gcc為ccl,as,ld等的一個大封裝。在編譯過程中,首先用到ccl,它将.c變為.s.在用as,将.s變為.o.最後用collect2連結所有.o.collect2是ld的一個封裝。

繼續閱讀