ZHCUAV8W january 1998 – march 2023 66AK2E05 , 66AK2H06 , 66AK2H12 , 66AK2H14 , AM1705 , AM1707 , AM1802 , AM1806 , AM1808 , AM1810 , AM5K2E04 , OMAP-L132 , OMAP-L137 , OMAP-L138 , SM470R1B1M-HT , TMS470R1A288 , TMS470R1A384 , TMS470R1A64 , TMS470R1B1M , TMS470R1B512 , TMS470R1B768
鏈接器主要通過 TI_ARM_C_DIR 環(huán)境變量查找運(yùn)行時(shí)支持庫(kù)。通常, TI_ARM_C_DIR 中的其中一個(gè)路徑名為 your install directory/lib,其中包含所有預(yù)構(gòu)建的庫(kù)以及索引庫(kù) libc.a。鏈接器會(huì)搜索 TI_ARM_C_DIR 來(lái)查找與應(yīng)用程序的構(gòu)建屬性最為匹配的庫(kù)。構(gòu)建屬性根據(jù)用于構(gòu)建應(yīng)用程序的命令行選項(xiàng)來(lái)間接設(shè)置。構(gòu)建屬性包含 CPU 版本等信息。如果明確指定了庫(kù)名稱(例如 -library=rtsv4_A_be_eabi),運(yùn)行時(shí)支持函數(shù)會(huì)精確地查找對(duì)應(yīng)的庫(kù)。如果沒有指定庫(kù)名稱,鏈接器會(huì)使用索引庫(kù) libc.a 來(lái)挑選合適的庫(kù)。如果通過路徑指定了庫(kù)(例如 –library=/foo/rtsv4_A_be_eabi),則會(huì)假定對(duì)應(yīng)庫(kù)已經(jīng)存在,而不會(huì)自動(dòng)進(jìn)行構(gòu)建。
索引庫(kù)描述了一組具有不同構(gòu)建屬性的庫(kù)。鏈接器將會(huì)比較每個(gè)潛在庫(kù)的構(gòu)建屬性與應(yīng)用程序的構(gòu)建屬性,然后挑選最合適的庫(kù)。有關(guān)索引庫(kù)的詳細(xì)信息,請(qǐng)參閱 ARM 匯編語(yǔ)言工具用戶指南 中的歸檔器一章。
現(xiàn)在鏈接器已經(jīng)決定了要使用的庫(kù),接下來(lái)它會(huì)檢查 TI_ARM_C_DIR 中是否存在運(yùn)行時(shí)支持庫(kù)。該庫(kù)必須與索引庫(kù) libc.a 位于完全相同的目錄中。如果該庫(kù)不存在,鏈接器會(huì)調(diào)用 mklib 來(lái)構(gòu)建它。當(dāng)該庫(kù)缺失時(shí),不管是用戶直接指定了該庫(kù)的名稱,還是允許鏈接器從索引庫(kù)中挑選最合適的庫(kù),都會(huì)出現(xiàn)這種情況。
mklib 程序會(huì)構(gòu)建所請(qǐng)求的庫(kù),并將其置于索引庫(kù)所在同一目錄中的 TI_ARM_C_DIR 的“l(fā)ib”目錄部分中,以便用于后續(xù)編譯。
要注意的事項(xiàng):