当前位置: 技术问答>linux和unix
问个开源软件交叉编译的通用问题
来源: 互联网 发布时间:2016-08-31
本文导语: 最近交叉交叉编译一些软件到arm平台上,有不少类似的问题一直无解,请高手帮忙。 一般开源库在configure的时候都是会检测系统一些依赖库的安装状态,然后生成“正确的”Makefile 但是 交叉编译时候,configure根据...
最近交叉交叉编译一些软件到arm平台上,有不少类似的问题一直无解,请高手帮忙。
一般开源库在configure的时候都是会检测系统一些依赖库的安装状态,然后生成“正确的”Makefile
但是 交叉编译时候,configure根据的是 开发机的配置来生成Makefile,这明显不符合要求。
请问如何在交叉编译的时候让configure根据目标平台的rootfs来决定如何生成Makefile。(rootfs在开发机的特定的一个目录下)。由于Makefile生成不正确还引入了一系列其他的问题。比如我再对libdbus交叉编译生成Makefile后,然后make,在生成dbus-daemon时,arm-linux-gcc竟然去主动链接 开发机的/usr/libdbus-1.0.so这个库,然后报了个 动态库格式不正确。
欢迎大家广泛提供相关信息,如果有介绍这个方面的相关资料,请不吝赐教。
多谢了!
一般开源库在configure的时候都是会检测系统一些依赖库的安装状态,然后生成“正确的”Makefile
但是 交叉编译时候,configure根据的是 开发机的配置来生成Makefile,这明显不符合要求。
请问如何在交叉编译的时候让configure根据目标平台的rootfs来决定如何生成Makefile。(rootfs在开发机的特定的一个目录下)。由于Makefile生成不正确还引入了一系列其他的问题。比如我再对libdbus交叉编译生成Makefile后,然后make,在生成dbus-daemon时,arm-linux-gcc竟然去主动链接 开发机的/usr/libdbus-1.0.so这个库,然后报了个 动态库格式不正确。
欢迎大家广泛提供相关信息,如果有介绍这个方面的相关资料,请不吝赐教。
多谢了!
|
我接触过的几个交叉编译环境都是针对不同体系结构有各自的库和工具目录,如powerpc架构,那就一定是去链接powerpc目录下的库文件。
感觉交叉编译环境都比较脆弱,不应该太依赖于configure检测,折腾好某个架构下的Makefile就一直用它了,不存在每次都configure再去生成Makefile的问题。
或者是通过硬赋值的方式来引导configure,如指定体系结构,指定大小端,指定库文件路径等。
感觉交叉编译环境都比较脆弱,不应该太依赖于configure检测,折腾好某个架构下的Makefile就一直用它了,不存在每次都configure再去生成Makefile的问题。
或者是通过硬赋值的方式来引导configure,如指定体系结构,指定大小端,指定库文件路径等。
|
先设置host=arm-linux,然后执行./configure看有什么错误,最后查看该错误是否会影响代码,如果不影响则在configure注销该段检测代码.然后生成Makefile编译,如果在遇到问题,直接修改Makefile文件.直至编译成功.
没什么好办法,除非开源软件本身就预见到了将会在arm-linux下使用,否则需要自己去调试编译.
没什么好办法,除非开源软件本身就预见到了将会在arm-linux下使用,否则需要自己去调试编译.