嵌入式开发中的库与交叉编译技术详解
1. 静态库
静态链接在某些情况下非常有用。例如,当构建一个仅由BusyBox和一些脚本文件组成的小型系统时,静态链接BusyBox可以避免复制运行时库文件和链接器,使操作更简单。而且,由于只链接应用程序使用的代码,而不是整个C库,生成的文件也会更小。此外,当需要在包含运行时库的文件系统可用之前运行程序时,静态链接也很有帮助。
要进行静态链接,只需在命令行中添加 -static
选项,示例如下:
$ arm-cortex_a8-linux-gnueabihf-gcc -static helloworld.c -o helloworld-static
执行后,你会发现生成的二进制文件大小显著增加:
$ ls -l
-rwxrwxr-x 1 chris chris 5884 Mar 5 09:56 helloworld
-rwxrwxr-x 1 chris chris 614692 Mar 5 10:27 helloworld-static
静态链接从库存档文件中提取代码,通常这些存档文件名为 lib[name].a
。例如,上述示例中使用的是 libc.a
,它位于 [sysroot]/usr/lib
目录下:
$ export SYSROO