在交叉编译中我们都是在宿主机上编译完成东西后到目标板上运行,这恰恰引来了路径的问题。
- 如果是一个单独的.so还好弄一些,直接拷贝到目标板根文件系统的我们所需要的位置后然后设置LD_LIBRARY_PATH指向该路径后,运行时程序就会搜索到需要的so即可运行
- 但是如果一个.so需要靠某个路径来加载配置etc,这个事情就麻烦了,如果你想学习PC机的那种目录结构就会引来你交叉编译的程序和本机程序冲突的问题,不能覆盖安装,怎么办呢? 一种方法是装到另一个路径上去这样虽然会引起一些目录上的变动,但是是很方便的,如果觉得这样不爽,就只能采取后一种方法了,那就是在./configure的时候将--prefix=/usr,然后在make install 的时候加入DESTDIR的变量设置安装根路径为rootfsdir(你自己的根文件系统的根路径),你交叉编译的程序就会被安装到rootfsdir/usr下面。这样在将rootfsdir做成镜像烧到板子上运行的时候绝对路径就是/usr了,和设置的prefix没有区别,程序即可正常运行