1、Linux内核头文件:构建工具链所要用到的第一个组件是一组Linux内核头文件,目的是让应用程序设计者看到较好用的API,而不是原始的Linux内核系统调用,所以编译系统需要Linux内核头文件的一个子集。理论上:构建工具链用到的头文件与目标系统的用到的Linux内核应该来自相同的版本,事实上,很少这么做,因为Linux内核的API很少变动,所以来自不同版本(但类似)的内核头文件也是很普通的事。
2、Linux内核头文件在2.6系列之前,C程序库的构建可直接使用Linux内核目录include/asm-architecture与include/linux中说找到的头文件护板,自2.6.23版开始,内核源码配备一个Make目标用于自动构建Linux内核头文件经过消毒的版本
$make ARCH=ppc headers_check
$make ARCH=ppc INSTALL_HDR_PATH=headers/ headers_install
3、如果你想找出某个应用程序或动态库依赖了哪些动态程序库,你通常可以用ldd命令,不过在嵌入式环境中,没有target版本的ldd命令的话,使用toolchain中的readelf也可以有同样的效果:
$arm-none-linux-readelf -a xxxx.so | grep "Shared library"
4、嵌入式的设备一般资源有限,在选择c库也有一定的研究,一个经验法则:若你的项目需要用到大于16MB或更多的flash设备,这非常适合使用glibc,若你的项目需要较小的ram,则可用uClibc,diet libc或newlib代替