.mm .a .so .o .lib .dll .obj .sh .mk .java .jar

->         SDK NDK ADT API DLL JDK JNI eclipse         

Android.mk文件语法规范及使用模板

         GCC编译器(多种硬体平台上编译出可执行程序的超级编译器)         

         Makefile经典教程(掌握这些足够)         

.mm

.mm是oc和C++混编类型文件后缀,给编译器识别的。

如果程序中用到了C++的函数,那么就需要把工程中的.m写成.mm。

其实就是m文件,因为用到了静态库 比如什么***.a ,所以m文件要 改成.mm


.a .so .o



.o      cpp(或c 等语言文件)编译后生成.o文件  .o包含的是机器可以识别的 01机器语言。 即对象文件

.a     一个.o文件 可能还会用到别的.o文件 才可执行  .a文件就是这些.o文件的集合  即静态库文件  静态库文件会被加入程序 成为可执行文件的一部分

.so  文件是共享库文件(动态链接)。动态链接所调用的函数代码并没有被拷贝到应用程序的可执行文件中去,而是仅仅在其中加入了所调用函数的描述信息(往往是一些重定位信息)。仅当应用程序被装入内存开始运行时,在操作系统的管理下,才在应用程序与相应的.so之间建立链接关系。  cocos2dx 里面的函数是通过动态库调用的

LINUX系统中.a文件是静态链接库文件。所谓静态链接是指把要调用的函数或者过程链接到可执行文件中,成为可执行文件的一部分。

.so文件是共享库文件(动态链接)。动态链接所调用的函数代码并没有被拷贝到应用程序的可执行文件中去,而是仅仅在其中加入了所调用函数的描述信息(往往是一些重定位信息)。仅当应用程序被装入内存开始运行时,在操作系统的管理下,才在应用程序与相应的.so之间建立链接关系。

.o文件就是对象文件,里面包含的内容就是01这样的机器可执行的指令,当程序要执行时还需要进行链接(link).链接就是把多个.o文件链成一个可执行文件。

.a文件就是多个.o文件的组合。

.a文件是库文件

找一下对应的.h文件,然后把.a和.h一起添加到你的项目里。然后直接调用.h文件中的函数即可

.lib .dll .obj

.lib是一种文件名后缀,该文件为Windows操作系统中的库文件,相当于Linux中的·a或·o、.so文件

lib文件通过编译才可以使用编译分静态与动态之分。

静态编译

静态lib将导出声明和实现都放在lib中。编译后所有代码都嵌入到宿主程序

动态编译

动态lib相当于一个h文件,是对实现部分(.dll文件)的导出部分的声明。编译后只是将导出声明部分编译到宿主程序中,运行时候需要相应的dll文件支持

与dll区别

(1)lib是编译时需要的,dll是运行时需要的。

(2)一般的动态库程序有lib文件和dll文件。lib文件是必须在编译期就连接到应用程序中的,而dll文件是运行期才会被调用的。

(3)在动态库的情况下,有两个文件,一个是引入库(.LIB)文件,一个是DLL文件,引入库文件包含被DLL导出的函数的名称和位置,DLL包含实际的函数和数据,应用程序使用LIB文件链接到所需要使用的DLL文件,库中的函数和数据并不复制到可执行文件中,因此在应用程序的可执行文件中,存放的不是被调用的函数代码,而是DLL中所要调用的函数的内存地址,这样当一个或多个应用程序运行时再把程序代码和被调用的函数代码链接起来,从而节省了内存资源。从上面的说明可以看出,DLL文件必须随应用程序一起发行,否则应用程序将会产生错误。

obj就是目标文件,是你的源程序经过编译程序编译后生成的. 它不能直接执行,需要连接程序连接后才能生成可执行文件, 这样就能值行了。这种目标文件一般是由机器代码组成的,obj文件是目标文件,一般是程序编译后的二进制文件,在通过链接器和资源文件链接就成exe文件了。OBJ只给出了程序的相对地址,而EXE是绝对地址。

.sh

是UNIX/LINUX 操作系统的脚本文件

.mk
文件类型:Makefile
Android.mk编译文件是用来向Android NDK描述你的C,C++源代码文件的
一个Android.mk file用来向编译系统描述你的源代码。具体来说:该文件是GNU Makefile的一小部分,会被编译系统解析一次或多次。你可以在每一个Android.mk file中定义一个或多个模块,你也可以在几个模块中使用同一个源代码文件。每个模块属下列类型之一:
 1)APK程序,一般的Android程序,编译打包生成apk文件
  2)JAVA库,java类库,编译打包生成jar文件
  3)  C\C++应用程序,可执行的C\C++应用程序
  4)C\C++静态库,编译生成C\C++静态库,并打包成.a文件
  5)C\C++共享库, 编译生成共享库(动态链接库),并打包成.so, 有且只有共享库才能被安装/复制到您的应用软件(APK)包中。


.java  .jar

.java 类似.cpp

JAR(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件

使用范围

一个 JAR 文件可以用于

□ 用于发布和使用类库
□ 作为应用程序和扩展的构建单元
□ 作为组件、applet 或者插件程序的部署单位
□ 用于打包与组件相关联的辅助资源
JAVA手机电子书 的格式一般为JAR和JAD,其中JAD文件是一个说明文件,描述jar文件的信息。





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值