最近專案使用stm8s,編譯環境使用的ide是iar,裡面使用到第三方晶元廠商提供的.a檔案。我的任務是對這 個.a檔案進行封裝介面,然後提供乙個.a檔案。
在完成了封裝的介面後,在iar編譯環境下,把需要編譯成.a庫的檔案包含進去之後,發現無法脫離原先的第三方晶元廠商提供的.a檔案進行編譯,必須要包含其標頭檔案。這樣一來,我的封裝功夫就白白浪費了,因為其它人也可以直接呼叫晶元廠商提供的函式對晶元進行操作。
經過幾番查詢,網上大多數是講怎麼把原始檔編譯成庫檔案,而找不到怎麼合併兩個.a檔案的教程。
結合在linux下的經驗,按照linux下的操作流程,先把兩個.a檔案解壓出來,然後再次打包成乙個.a檔案。實驗結果表明,這樣做可行,在此總結一下操作步驟。
iar下怎麼生成.a檔案的教程,在此就不再詳細說明,可以在網上很容易找到。
如下圖所示,libdx8api_iarstm8.a
對應的標頭檔案是dx8_api.h
,stm8s_dx82.a
對應的標頭檔案是dx8.h
。
現在要把這兩個.a檔案合併成乙個.a檔案,不對外暴露dx8_api.h
檔案。
將libdx8api_iarstm8.a
和stm8s_dx82.a
拷貝到ubuntu的系統中。我的ubuntu是安裝在vm虛擬機器,版本是
使用如下命令,分別解包兩個檔案
# 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標頭檔案即可。
Linux將兩個檔案合併
可以使用cat命令,有兩種實現的方式,一種將兩個檔案合併的到乙個新的檔案,另一種將乙個檔案追加到另乙個檔案的末尾。方法一 使用cat命令從檔案中讀入兩個檔案,然後將重定向到乙個新的檔案。這種方法可以一次性合併任意多個檔案。用法示例 將file1.txt和file2.txt合併到file.txt ca...
Python合併兩個列表的方法
瀏覽部落格看到乙個問題 如何合併兩個列表,今天就來 一下。方法一 最原始,最笨的方法,分別從兩個列表中取出所有的元素,再放入新列表中就ok了。示例 如下 list1 1,2,3 list2 4,5,6 list new for item in list1 for item in list2 prin...
合併兩個byte
byte sshead system.text.encoding.unicode.getbytes this is head byte sscontent system.text.encoding.unicode.getbytes this is content.sshead sscontent b...