Chinaunix首页 | 论坛 | 博客
  • 博客访问: 684138
  • 博文数量: 113
  • 博客积分: 7070
  • 博客等级: 少将
  • 技术积分: 930
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-02 21:03
文章分类

全部博文(113)

文章存档

2012年(2)

2011年(10)

2010年(19)

2009年(39)

2008年(20)

2007年(23)

我的朋友

分类: 嵌入式

2011-06-13 17:46:31

MTK生成库(ARM) 过程

第一步,生成真机的obj文件
第二步,找到相关的obj文件 D:\LongCheer\build\LC6225_GEMINI\gprs\MT6225o\mmi_app
第三步,把相关的obj文件拷贝到一个目录下面 D:\lib_temp
第四步,打开命令窗口,输入命令 armar -r temp.lib *.obj 生成 temp.lib 库
第五步,输入命令armar -tv temp.lib 可以看到加入的库
 
 
例:编译完之后--
1、在。。\build\XXX\gprs\MT6223Po下新建一个a文件夹
2、把需要的obj文件放到lexue目录下
3、修改..\make\XXX_MMI_GPRS.mak
在下面这三行后面
ifeq ($(findstring FMT_NOT_PRESENT,$(CUSTOM_OPTION)),)
CUS_REL_SRC_COMP += fmt
endif
添加
CUS_REL_SRC_COMP += a
4、执行命令
make custom=XXX gprs remake
5、找到。。\build\XXX\gprs\MT6223Po\lib
这时a.lib就已经生成好了
6、注意:生成完之后,把第3步聚的东西修改回来,同时把a.lib放到根目录中的a目录下
7、在确定lib生成没问题了,把第一步的a文件夹删除掉
 
----------------------------------------------------------
 
MTK生成lib库(Win32)
 
1. 首先要确定你的电脑上安装了visual c++ 6.0(其他版本没试过),假设我们将vc安装在了C:\Program Files\Microsoft Visual Studio

2. 在桌面上右键点击“我的电脑”---属性---高级---环境变量
3. 在系统变量里找到“path”,双击编辑
4. 在变量值的最后添加“;C:\Program Files\Microsoft Visual Studio\VC98\Bin;C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin”
5. 点击确定
6. 新建一个环境变量,变量名:“INCLUDE”,变量值:“C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE”
7. 再新建一个环境变量,变量名:“LIB”,变量值:“C:\Program Files\Microsoft Visual Studio\VC98\LIB”
8. 确定保存
然后就可以使用VC的link命令来打win32 的lib包了
 
举个例子
将使用vc编译出来的obj文件(注意不是arm编译出来的obj),例如:..\MoDIS\mmi_app\Debug中你需要的obj拷贝到D:\obj下用命令行模式进入该目录,执行 link /lib /out:mylib.lib *.obj就可以生成一个mylib.lib的目标文件
 
 
*************************************************************************
 
Keil的lib生成个人总结
 
1. 生成lib 的工程可以没有main函数,可以只有一个.c文件,一个.c文件中可以只有一个函数
2. 需要在lib工程中建立一个.h文件, 必须用extern声明各全局变量和函数.
3. 调用lib文件的工程中必须包括lib中的.h文件, 也就是lib工程和调用工程都包含同一个.h文件(好像有点废话)
2.Lib的文件要分的细一点,没有调用关系的两个函数不要放到同一个C文件中. 没有调用关系的最好是一个函数单独放在一个.c文件中.这是为了避免在keil中应用程序调用lib库里出现告警.     因为LIB51在链接的时候是按模块来链接的,一个模块就对应一个C文件,假如链接器因为要使用你一个函数fA而引入了A模块,那么A模块中的另外的函数也会被引入,而另外的函数你又没有使用的话,那么就会引发Keil经典的UNCALLED FUNC的warning。
通常为每一个函数编一个.C文件,而整个lib用一个.h文件,这样就可以使只有被调用的函数参与连接
3.调用lib库时需要在工程中将.lib文件加进来. 在Group中右键,然后Add ,注意文件类型中选择*.lib.
 
 
*************************************************************************
 
IAR的lib生成方式参考:
 
阅读(1425) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~