1. 静态链接与动态链接的概念
-
静态链接是在指编译系统在连接阶段将程序的目标文件与所欲需要的库函数文件链接在一起,这样生成的可执行文件可以在没有函数库的情况下运行。
-
动态链接是指编译系统在编译阶段没有把目标文件与所需要的库函数文件链接在一起,而是等到程序运行阶段的需要使用时才链接库函数。
2. 静态链接与动态链接的优缺点
-
静态链接
优:运行效率高
缺:生成的可执行文件较大 -
动态链接
优:运行效率低
缺:生成的可执行文件较小
3.在配置Busybox的选项时,选择静态链接与动态链接的区别:
- 在使用静态链接方式即Build BusyBox as a static binary方式进行编译时,所需的库已经与程序静态地链接在一起,这些程序不需要额外的库就可以单独运行,这意味着在构建根文件系统时不需要添加额外的库文件。但是自己编写的程序在文件系统上运行必须采用静态编译,否则会报诸如:bin/sh: hello :not found的错误。如果想要在开发板上使用动态链接方式,把arm-linux-gcc里面的库文件加进去就可以了
- busybox选择动态编译的话,命令和工具集需要加载lib里面的库,所以在制作根文件系统的时候必须要添加库文件,否则根文件系统无法启动
小结:不管在配置busybox中如何配置链接方式,只要在根文件系统中加入了相应的库函数,都可使用动态链接方式