IAR软件生成库文件.a的license限制
?1、背景? ? ?
? ? ? ?為了實現代碼的加密,有時需要把源代碼編譯成庫文件給別人使用。最近和另外一個公司A合作, 這個公司提供一個庫文件來給我使用。
2、問題
? ? ? 第一次A公司提供的庫文件,經過我測試可以放在自己的產品工程中使用,我的工程代碼達到了200KB,超過了32KB。
? ? ? 后面A公司對庫文件進行了升級,加入了一些功能,再次提供給我庫文件,我單獨建立一個小的測試工程,測試可以使用,這個小工程編譯出來的代碼不超過32KB,但是一把這個庫文件加入正式的產品工程中編譯時報鏈接出錯。如下圖,產品工程由于編譯源代碼一直都沒有問題,而下面提示的是代碼限制是由于為庫文件的原因,所以猜測是庫文件的原因。具體什么原因呢?奇怪的是自己創建的測試小工程可以用,放到正式的產品的工程中就鏈接出錯。暫時不知道。
? ? ? 首先通過最簡單的大小比較,以前能用的庫文件為23KB,后面提供的庫文件都比這個大,是不是由于大小的原因呢,讓對方公司把一個庫文件拆成2個庫文件,并且降低每個庫文件的大小,測試依然不行。
? ? ? 其次查看庫文件的內容,使用比較工具軟件可以查看,發現庫文件的編譯的IAR軟件為9.1,我使用的軟件為8.4那是不是由于不同版本的原因導致的,再讓A公司使用同樣的版本來編譯,測試依然不行。
? ? ? 最后,已經沒有想法了,為什么最早的庫文件可以,后面編譯的庫文件全部不行。對比一下文件吧。無意中看到了下面的區別,后面編譯出來的庫文件由于已經帶有了32KB代碼的限制了,所以加到我的正式產品工程中后,整個工程的代碼量一旦超出32K就無法成功鏈接。
?
? ? ? 找到原因,解決辦法就很簡單了,讓對方使用po jie無限制的IAR軟件重新編譯一下庫文件給我即可。
3、有用的工具
? ? ? ?分析庫文件的中內容可以使用二進制文件查看工具,此工具只能查看文件細節的內容,庫文件提供的符號表這些看不到,可以使用gcc工具下的nm命令可以查看,在linux電腦下自帶, windown電腦下安裝一下mingw也可以使用。如下圖,可以看出庫文件中提供了對外函數調用
?
?
?
總結
以上是生活随笔為你收集整理的IAR软件生成库文件.a的license限制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 跨域资源共享CORS详解
- 下一篇: 原码、反码、补码,计算机中所有的数都是以