IAR合併兩個.a文件的方法

IAR合併兩個.a文件的方法

最近項目使用STM8S,編譯環境使用的IDE是IAR,裏面使用到第三方芯片廠商提供的.a文件。我的任務是對這 個.a文件進行封裝接口,然後提供一個.a文件。

在完成了封裝的接口後,在IAR編譯環境下,把需要編譯成.a庫的文件包含進去之後,發現無法脫離原先的第三方芯片廠商提供的.a文件進行編譯,必須要包含其頭文件。這樣一來,我的封裝功夫就白白浪費了,因爲其它人也可以直接調用芯片廠商提供的函數對芯片進行操作。

經過幾番查詢,網上大多數是講怎麼把源文件編譯成庫文件,而找不到怎麼合併兩個.a文件的教程。

結合在Linux下的經驗,按照Linux下的操作流程,先把兩個.a文件解壓出來,然後再次打包成一個.a文件。實驗結果表明,這樣做可行,在此總結一下操作步驟。

IAR下怎麼生成.a文件的教程,在此就不再詳細說明,可以在網上很容易找到。

如下圖所示,libdx8api_iarstm8.a對應的頭文件是DX8_API.hSTM8S_DX82.a對應的頭文件是dx8.h
這裏寫圖片描述

現在要把這兩個.a文件合併成一個.a文件,不對外暴露DX8_API.h 文件。

libdx8api_iarstm8.aSTM8S_DX82.a拷貝到Ubuntu的系統中。我的Ubuntu是安裝在VM虛擬機,版本是
Linux mq-VM 4.4.0-21-generic #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

這裏寫圖片描述

使用如下命令,分別解包兩個文件
# ar -x libdx8api_iarstm8.a
# ar -x STM8S_DX82.a

解壓之後,多出幾個.o的文件。這些文件就是.a文件打包起來的文件。

# ls
DX8_API.o  dx8.o  libdx8api_iarstm8.a  sha1.o  STM8S_DX82.a  streamec.o

可以使用ar -t命令查看各個.a文件的內容:

# ar -t libdx8api_iarstm8.a
DX8_API.o
sha1.o
streamec.o

使用ar -r命令將所有.o文件打包成一個.a文件。

# ar r libdx8.a DX8_API.o dx8.o sha1.o streamec.o 
ar: 正在創建 libdx8.a

打包完成,再次查看libdx8.a包含的文件

# ar t libdx8.a 
DX8_API.o
dx8.o
sha1.o
streamec.o

將打包好的.a文件拷貝回STM8S的項目工程文件夾下,把原先兩個.a文件去除掉,將新的.a文件包含進來,只需保留dx8.h頭文件即可。
這裏寫圖片描述
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章