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也可以使用。如下图,可以看出库文件中提供了对外函数调用

猜你喜欢

转载自blog.csdn.net/fhqlongteng/article/details/126656543