在arm和windows下打包obj成Lib库的方法

ARM 129浏览

   和第三方合作时可能会涉及到某些模块需要保密,而提供给第三方的代码又要让第三方能够正常new,所以需要把某些.c生成的Obj打包成库,然后把.c删除。
具体需要知道两条指令就行,分别是arm下的和windows下的,看例子:

   1、arm下:
   armar -create -r bbkdrv.lib  lcd.obj adc_channel.obj alerterdrv.obj alerter_tone.obj auxmain.obj chr_parameter.obj custom_drv_init.obj custom_equipment.obj custom_hw_default.obj eint_def.obj exif_custom.obj gpio_drv.obj irda_custom.obj keypad_def.obj msdc_custom.obj
MT6302_custom.obj pmic_custom.obj pmu_custom.obj pwmdrv.obj touch_panel_custom.obj touch_panel_spi.obj tv_custom.obj uart_def.obj uem_gpio.obj usb_custom.obj usb_host_ms_custom.obj adc_var.obj eint_var.obj gpio_var.obj uem_drv.obj gpio_setting.obj pwic_cust.obj
camera_hw.obj camera_info.obj camera_yuv_para.obj image_sensor.obj usbvideo_attr.obj

  2、windows下:
   lib   /OUT:my.lib   lcd.obj adc_channel.obj alerterdrv.obj alerter_tone.obj auxmain.obj chr_parameter.obj custom_drv_init.obj custom_equipment.obj custom_hw_default.obj eint_def.obj exif_custom.obj gpio_drv.obj irda_custom.obj keypad_def.obj msdc_custom.obj
MT6302_custom.obj pmic_custom.obj pmu_custom.obj pwmdrv.obj touch_panel_custom.obj touch_panel_spi.obj tv_custom.obj uart_def.obj uem_gpio.obj usb_host_ms_custom.obj adc_var.obj eint_var.obj gpio_var.obj uem_drv.obj gpio_setting.obj pwic_cust.obj camera_hw.obj
camera_info.obj camera_yuv_para.obj image_sensor.obj usbvideo_attr.obj

   注意armar可以直接在任何目录运行,而lib.exe如果不配置环境变量就需要在C:Program FilesMicrosoft Visual StudioVC98Bin才能运行,运行lib.exe是可能还会提示少一个库,在C:Program FilesMicrosoft Visual Studio下搜索缺少的库文件,拷贝到C:Program FilesMicrosoft Visual StudioVC98Bin中就行。

   arm下需要打包的文件在buildBBK35_08BgprsMT6235o中找,windows下需要打包的文件在类似MoDISconn_appDebug的文件中找。

   通过方式1可以得到在arm下用的库bbkdrv.lib,提过方式2,可以得到在windows下用的my.lib.然后删除在Make目录下lis文件中的C文件编译列表,最后再把对应的.c删除,修改make file把得到的库link进去,这样该工程第三方拿到可以很方便的New了,我们也达到了保密的目的。对于在vc上使用的my.lib可以在creatmodis.pl中把该Lib link进去,也可以在编译完成以后直接在vc中modis模块->setting->link->object/library
modules中Link进去。

   注意:对于打包成lib的文件,需要是相对独立的,对于某些.c,里面调用了外部非常多的宏定义,枚举等,最好就不要打包到Lib中,那样可能导致内部和外部的id不一致而引起莫名其妙的问题,以前做25双卡平台的时候就发现过MTK release过来的代码因为lib没有控制好,导致调一下菜单机构,系统就异常了的问题,所以请慎重。