我想交叉编译软件(libdrm-armada)用于armhf架构。我有根文件系统(~/rootfs),它包含所需的共享对象。此文件系统将显示到eMMC上,并在自定义设备上运行。Libdrm使用一个配置脚本来生成Makefile。当我运行./configure时,它会退出,因为它找不到共享对象。
--with-sysroot、LD_LIBRARY_PATH、LIBRARY_PATH、LIBS、PKG_CONFIG_LIBDIR、LIBDRM_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中显示为:
...
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的文件中。
发布于 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
https://stackoverflow.com/questions/54134013
复制相似问题