2017-07-28 122 views
0

对于我的项目,我需要为通用ARM设备编译Qt 5.9.1。我建立了linaro的工具链。但Qt的这个配置暂停:ARM工具链在库的错误目录中查找

/usr/bin/arm-linux-gnueabihf-g++ -mfloat-abi=hard --sysroot=/mnt/elvees-rootfs/ -Wl,-O1 -fuse-ld=gold -o verifyspec verifyspec.o
/usr/bin/arm-linux-gnueabihf-ld.gold: error: /lib/libc.so.6: incompatible target /usr/bin/arm-linux-gnueabihf-ld.gold: error: cannot open /lib/ld-linux-armhf.so.3: No such file or directory /usr/bin/arm-linux-gnueabihf-ld.gold: error: /lib/libc_nonshared.a(elf-init.oS): incompatible target ../sysdeps/arm/start.S:124: error: undefined reference to '__libc_start_main' ../sysdeps/arm/start.S:128: error: undefined reference to 'abort' ../sysdeps/arm/start.S:113: error: undefined reference to '__libc_csu_fini' ../sysdeps/arm/start.S:120: error: undefined reference to '__libc_csu_init' collect2: error: ld returned 1 exit status

从外观上来看,在arm-linux的-gnueabihf-G ++看起来代替SYSROOT的在主机的/ lib /目录库。这种行为的任何原因以及如何解决这个问题?我最好的选择是挂载的sysroot中的符号链接失效,但我已经手动更改了“libc.so.6”一个,输出仍然是相同的。 为了澄清,主机和目标正在运行Arch。

编辑

按要求,这里是我的qmake.conf(产生mkspec):

include(../common/linux_device_pre.conf) 

ELVEES_CFLAGS    = -march=armv7-a -mtune=cortex-a9 -mfpu=neon-fp16 -DLINUX=1 
QMAKE_CFLAGS   += $$ELVEES_CFLAGS 
QMAKE_CXXFLAGS   += $$ELVEES_CFLAGS 

DISTRO_OPTS += hard-float 

QT_QPA_DEFAULT_PLATFORM = eglfs 

include(../common/linux_arm_device_post.conf) 

QMAKE_INCDIR_EGL  = /mnt/elvees-rootfs/usr/include/EGL 
QMAKE_LIBDIR_EGL  = /mnt/elvees-rootfs/usr/lib 
QMAKE_INCDIR_OPENGL_ES2 = /mnt/elvees-rootfs/include/GLES2 
QMAKE_LIBDIR_OPENGL_ES2 = /mnt/elvees-rootfs/usr/lib 

QMAKE_LIBS_EGL   = -lEGL 
QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 $${QMAKE_LIBS_EGL} 

load(qt_config) 

而且这些都是qt_config选项:

./configure \ 
-opengl es2 \ 
-device arch-elvees-g++ \ 
-device-option CROSS_COMPILE=/usr/bin/arm-linux-gnueabihf- \ 
-sysroot /mnt/elvees-rootfs/ \ 
-opensource \ 
-confirm-license \ 
-optimized-qmake \ 
-release \ 
-make libs \ 
-prefix /opt/qt-elvees\ 
-no-pch \ 
-nomake examples \ 
-nomake tests \ 
-no-xcb \ 
-eglfs \ 
-v 
+0

我强烈建议你在Raspbian的覆盆子pi上做这个。不要浪费你的时间与交叉编译器。 –

+0

什么mkspec交叉编译qt你使用?将其添加到您的帖子中,使问题更加清晰。 – fghj

+0

@TheQuantumPhysicist 有趣的是,我约3 pi与qt交叉编译。 但是项目的整个目标是将Qt移植到这个**特定的**设备。 所以我有点儿不在这里。但无论如何感谢您的建议 – DarkMalex

回答

1

显然,加入-no-gcc-sysroot参数配置工作。