嵌入式开发中的库与交叉编译全解析
1. 静态库
静态链接在某些情况下非常有用。例如,当构建一个仅由BusyBox和一些脚本文件组成的小型系统时,静态链接BusyBox会更简单,还能避免复制运行时库文件和链接器。而且,由于只链接应用程序使用的代码,而非整个C库,生成的文件会更小。另外,若需要在包含运行时库的文件系统可用之前运行程序,静态链接也很有用。
要静态链接所有库,可在命令行中添加 -static 参数,示例如下:
$ arm-cortex_a8-linux-gnueabihf-gcc -static helloworld.c -o helloworld-static
使用 ls -l 查看文件大小时,会发现静态链接后的二进制文件大小显著增加:
$ 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 目录下,可通过以下命令查看:
超级会员免费看
订阅专栏 解锁全文
1346

被折叠的 条评论
为什么被折叠?



