当前位置:编程学习 > wap >>

MTK中怎样创建和使用lib

公司在做一个MTK平台的软件,需要将做好的模块打成lib给另一家公司使用,当然在把lib给别人之前得先自己测试过,所以在此请教知道的人 --------------------编程问答-------------------- 首先你要有MTK的开发环境,剩下的就是写MakeFile了,定义生成和依赖就行了 --------------------编程问答-------------------- 根据MTK各个平台的一些编译设置,编写Makefile文件,然后用ARM编译器编译成.a的库文件,提供给你的合作伙伴即可。 --------------------编程问答--------------------
     应该是OBJ吧,而不是LIB的哟!
      --------------------编程问答-------------------- make file --------------------编程问答-------------------- OBJ转成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文件夹删除掉 --------------------编程问答-------------------- mark --------------------编程问答-------------------- 用cmd切换到***.obj目录下
命令 armar -create ***.lib ***.obj
其中***.obj是由***.c文件编译后生成的。
使用的话在***.mak里面加上
COMPOBJS += 对应的路径
记得将lis文件里的.c删除 --------------------编程问答-------------------- gprs\MT6225o\lib文件夹下面不是直接生成了各个模块的lib文件吗? --------------------编程问答-------------------- 自己写多好呀哈哈。
@echo off
rem ************************************************************
rem *************** Simple Maker For Build DLink APP **************
rem *************** build application tool   **************    
rem ***************      version 1.0   **************        
rem ************************************************************
SET CC= armcc.exe
SET LIB=armar.exe
SET LIBPARAM=-create
SET ASM=armasm.exe
SET LINK=armlink.exe
SET FROMELF= fromelf.exe
Set SRC_FILES=..\pgc_games\bead\mf_bead_playing.c ..\pgc_games\bead\mf_bead_select.c ..\pgc_games\bead\mf_bead_start_scene.c ..\pgc_games\bead\mf_gameparticle.c ..\pgc_games\bead\mf_tanzhu_res.c ..\pgc_games\bead\mf_bead_menu.c 
Set INC_PTH= -I. -I..\pgc_games\bead\mf_bead_playing.c -I..\pgc_games\bead\mf_bead_select.c -I..\pgc_games\bead\mf_bead_start_scene.c -I..\pgc_games\bead\mf_gameparticle.c -I..\pgc_games\bead\mf_tanzhu_res.c -I..\pgc_games\bead\mf_bead_menu.c 
set DEF_COM=-D..\pgc_games\bead\mf_bead_playing.c -D..\pgc_games\bead\mf_bead_select.c -D..\pgc_games\bead\mf_bead_start_scene.c -D..\pgc_games\bead\mf_gameparticle.c -D..\pgc_games\bead\mf_tanzhu_res.c -D..\pgc_games\bead\mf_bead_menu.c 
set CCPARAM= -c -cpu ARM7EJ-S -littleend -O2 -zo -fa -apcs /interwork
set OBJ_PATH=.\output\jm_apploader
set LIB_NAME=.\output\jm_apploader\jm_apploader.lib
:COMP
echo delete files...
del /q %OBJ_PATH%\*.*
echo compiling...
rem FOR %%a IN (%SRC_FILES%) DO %CC% %CCPARAM% %INC_PTH% %DEF_COM% %%a -o %OBJ_PATH%\%%a.o -errors %OBJ_PATH%\%%a.log
rem echo create arm archives file...
rem %LIB% %LIBPARAM% %LIB_NAME% %OBJ_PATH%\*.o

%CC% %CCPARAM% %INC_PTH% %DEF_COM% ..\pgc_games\bead\mf_bead_playing.c -o %OBJ_PATH%\mf_bead_playing.o -errors %OBJ_PATH%\mf_bead_playing.log
if %errorlevel% == 1 goto errormf_bead_playing
%CC% %CCPARAM% %INC_PTH% %DEF_COM% ..\pgc_games\bead\mf_bead_select.c -o %OBJ_PATH%\mf_bead_select.o -errors %OBJ_PATH%\mf_bead_select.log
if %errorlevel% == 1 goto errormf_bead_select
%CC% %CCPARAM% %INC_PTH% %DEF_COM% ..\pgc_games\bead\mf_bead_start_scene.c -o %OBJ_PATH%\mf_bead_start_scene.o -errors %OBJ_PATH%\mf_bead_start_scene.log
if %errorlevel% == 1 goto errormf_bead_start_scene
%CC% %CCPARAM% %INC_PTH% %DEF_COM% ..\pgc_games\bead\mf_gameparticle.c -o %OBJ_PATH%\mf_gameparticle.o -errors %OBJ_PATH%\mf_gameparticle.log
if %errorlevel% == 1 goto errormf_gameparticle
%CC% %CCPARAM% %INC_PTH% %DEF_COM% ..\pgc_games\bead\mf_tanzhu_res.c -o %OBJ_PATH%\mf_tanzhu_res.o -errors %OBJ_PATH%\mf_tanzhu_res.log
if %errorlevel% == 1 goto errormf_tanzhu_res
%CC% %CCPARAM% %INC_PTH% %DEF_COM% ..\pgc_games\bead\mf_bead_menu.c -o %OBJ_PATH%\mf_bead_menu.o -errors %OBJ_PATH%\mf_bead_menu.log
if %errorlevel% == 1 goto errormf_bead_menu

%LIB% %LIBPARAM% %LIB_NAME% %OBJ_PATH%\*.o
if %errorlevel% == 1 goto error
echo compiled.
goto done
:errormf_bead_playing
echo Compiling file mf_bead_playing error : %errorlevel%
goto done
:errormf_bead_select
echo Compiling file mf_bead_select error : %errorlevel%
goto done
:errormf_bead_start_scene
echo Compiling file mf_bead_start_scene error : %errorlevel%
goto done
:errormf_gameparticle
echo Compiling file mf_gameparticle error : %errorlevel%
goto done
:errormf_tanzhu_res
echo Compiling file mf_tanzhu_res error : %errorlevel%
goto done
:errormf_bead_menu
echo Compiling file mf_bead_menu error : %errorlevel%
goto done

:error
echo make %LIB_NAME% error : %errorlevel%
:done
--------------------编程问答--------------------
引用 8 楼 niequanhui 的回复:
用cmd切换到***.obj目录下
命令 armar -create ***.lib ***.obj
其中***.obj是由***.c文件编译后生成的。
使用的话在***.mak里面加上
COMPOBJS += 对应的路径
记得将lis文件里的.c删除


正解 --------------------编程问答--------------------
引用 11 楼 hhunter 的回复:
引用 8 楼 niequanhui 的回复:
 用cmd切换到***.obj目录下
 命令 armar -create ***.lib ***.obj
 其中***.obj是由***.c文件编译后生成的。
 使用的话在***.mak里面加上
 COMPOBJS += 对应的路径
 记得将lis文件里的.c删除


 正解

说的很清楚了。 --------------------编程问答-------------------- 用cmd切换到***.obj目录下 
命令 armar -create ***.lib ***.obj 
其中***.obj是由***.c文件编译后生成的。 
使用的话在***.mak里面加上 
COMPOBJS += 对应的路径 
记得将lis文件里的.c删除 

我就是用这种方法做成的lib,但是在我的软件版本上能正常运行,但是在客户的软件上按下游戏菜单候出现白屏,这是为什么呢? --------------------编程问答-------------------- MARK,学习。 --------------------编程问答-------------------- 在MTK平台上的lib移植出现白屏,这与什么有关?软件版本?编译器?或者是因为我的lib移植性不好?但是按理来说,MTK的lib应该是可以在MTK平台移植的呀!这都两天了!!!! --------------------编程问答-------------------- 关注! --------------------编程问答-------------------- 现在确定问题出在NVRAM了,我这边读取的值是0,客户读取的值是2^24,还没找到问题的根源。 --------------------编程问答--------------------  
 

[img=D:\Backup\我的文档] --------------------编程问答-------------------- 09贴还在? --------------------编程问答-------------------- 方法0:
MTK平台如何生存LIB库文件:
1.       make 文件夹建立需要生成库的mylib,放入c和h文件,单独编译mylib模块
2.       make文件中COMPLIST加入mylib
3.       在REL_MMI_GPRS.mak中CUS_REL_MTK_COMP加入mylib
4.       在mtklib文件夹里面放mylib,就ok啦。

方法一:
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 可以看到加入的库
也可以这样armar -r xxx.lib x1.obj x2.obj。

方法二:
在option.mak 中单独添加一个模块
COMPLIST += tmptmp
在make中添加tmptmp目录及其那是个文件。
会在gprs\MT6225o\lib目录中有tmptmp.lib --------------------编程问答-------------------- --------------------编程问答--------------------
引用 8 楼 niequanhui 的回复:
用cmd切换到***.obj目录下
命令 armar -create ***.lib ***.obj
其中***.obj是由***.c文件编译后生成的。
使用的话在***.mak里面加上
COMPOBJS += 对应的路径
记得将lis文件里的.c删除


正解 之前我也这样做过 --------------------编程问答-------------------- #10楼  和 20楼的办法都可以。 --------------------编程问答-------------------- 第一步,生成真机的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 可以看到加入的库

也可以这样armar -r xxx.lib x1.obj x2.obj。 --------------------编程问答-------------------- mark --------------------编程问答-------------------- 6楼说的对
补充:移动开发 ,  移动开发其他问题
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,