【Android】【NDK】目标文件,静态库,动态库

目标文件

目标文件是由源代码编译而成的二进制文件
源代码是供开发者阅读的文本文件,它的体积大,而且本质上都是文本,无法直接被机器使用,所以需要先编译为目标文件
一个源代码文件,经过编译就会对应生成一个目标文件

静态链接库

供主程序代码调用的库文件,在编译时,静态链接库里面的功能都会被打包到主程序里,成为主程序的一部分

动态链接库

供主程序调用,需要跟随主程序一起发布,到运行时才会被动态调用

可执行文件

能够被操作系统调用,直接启动一个应用进程的文件

关联

静态链接库,动态链接库和可执行文件,都是由目标文件链接而来,只是设计用途不一样

静态链接库和动态链接库的特征对比

  • 静态库会被编译进主程序,不用担心库丢失的问题,适合到处拷贝独立运行,不依赖于外部环境,独立性强
  • 但由于静态库的方式将所有的库代码都打包到主程序里面了,主程序体积就会增大
  • 动态库的共享性强,比如Windows系统中的dll文件,可以被任意程序调用
  • 由于Windows中的dll文件是共享的,其它程序就无需再包含了,因此动态库的方式有利于减小主程序体积
  • 动态库的缺点同样明显,它依赖于外部环境,比如Windows系统中常见的dll丢失的问题,每个机子环境是不一样,到其它机子上可能就无法正常运行了
  • 如果程序想要做成便携式,一个主程序可以到处直接运行的,适合静态库模式
  • 如果希望程序模块可以动态升级的,适合动态库模式,只要替换对应模块的dll文件,就可以实现升级,其它文件都无需替换,主程序也不需要重启

文件格式

在Windows中,目标文件为.obj格式,静态链接库为.lib格式,动态链接库为.dll格式,可执行文件为.exe格式
在Linux中,目标文件为.o格式,静态链接库为.a格式,动态链接库为.so格式,可执行文件有.rpm等多种格式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章