首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根文件系统的交叉编译软件

根文件系统的交叉编译软件
EN

Stack Overflow用户
提问于 2019-01-10 17:30:16
回答 1查看 1.3K关注 0票数 1

我想交叉编译软件(libdrm-armada)用于armhf架构。我有根文件系统(~/rootfs),它包含所需的共享对象。此文件系统将显示到eMMC上,并在自定义设备上运行。Libdrm使用一个配置脚本来生成Makefile。当我运行./configure时,它会退出,因为它找不到共享对象。

--with-sysrootLD_LIBRARY_PATHLIBRARY_PATHLIBSPKG_CONFIG_LIBDIRLIBDRM_LIBS参数无效。

./配置--构建=x86_64-linux--主机=arm-linux\ -前缀=~/test\ LDFLAGS=-L~/rootfs/usr/lib/arm-linux-gnueabihf\ CFLAGS=-I~/rootfs/usr/include \ CC=~/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc

我试图解决的错误在config.log中显示为:

代码语言:javascript
复制
...
configure:3269: /home/user/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc -I/home/user/rootfs/usr/include  -L/home/user/rootfs/usr/lib/arm-linux-gnueabihf conftest.c  >&5
/home/user/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/6.3.1/../../../../arm-linux-gnueabihf/bin/ld: cannot find /lib/arm-linux-gnueabihf/libc.so.6 
/home/user/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/6.3.1/../../../../arm-linux-gnueabihf/bin/ld: cannot find /usr/lib/arm-linux-gnueabihf/libc_nonshared.a
/home/user/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/6.3.1/../../../../arm-linux-gnueabihf/bin/ld: cannot find /lib/arm-linux-gnueabihf/ld-linux-armhf.so.3
collect2: error: ld returned 1 exit status 
...

如何正确编译软件并将其安装到~/rootfs中?

编辑(谢谢Basile!)

您可以通过签出git存储库来研究源代码。

git克隆git://git.armlinux.org.uk/~rmk/libdrm-armada.git/; cd libdrm-armada/; mkdir m4; ./配置--构建=..。以此类推。

请注意,配置脚本生成Makefile。如果运行上面的./配置命令,错误将存储在名为config.log的文件中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-11 11:52:20

我已经找到了解决问题的办法。我必须将--sysroot标志添加到LDFLAGS参数中。

./配置--构建=x86_64-linux--主机=arm-linux\ -前缀=~/test\ LDFLAGS='-L~/rootfs/usr/lib/arm-linux-gnueabihf --sysroot=~/rootfs‘\ CFLAGS=-I~/rootfs/usr/include \ CC=~/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc

运行make &&结果输出文件位于~/test中。共享对象是ARM类型的:

./lib/libdrm_armada.so.0.2.0: ELF 32位LSB共享对象,ARM,EABI5 version 1 (SYSV),动态链接,未剥离EABI5

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54134013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档