ARM工具链在库的错误目录中查找

时间:2017-07-28 08:12:56

标签: linux qt arm cross-compiling linaro

对于我的项目,我需要为通用ARM设备编译Qt 5.9.1。我已经设置了linaro的工具链。但Qt配置暂停:

  

/ 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:错误:/lib/libc.so.6:不兼容的目标   /usr/bin/arm-linux-gnueabihf-ld.gold:错误:无法打开/lib/ld-linux-armhf.so.3:没有这样的文件或目录   /usr/bin/arm-linux-gnueabihf-ld.gold:error:/lib/libc_nonshared.a(elf-init.oS):不兼容的目标   ../sysdeps/arm/start.S:124:错误:未定义引用&#39; __ libc_start_main&#39;   ../sysdeps/arm/start.S:128:错误:未定义引用&#39; abort&#39;   ../sysdeps/arm/start.S:113:错误:未定义引用&#39; __ libc_csu_fini&#39;   ../sysdeps/arm/start.S:120:错误:未定义引用&#39; __ libc_csu_init&#39;   collect2:错误:ld返回1退出状态

从外观上看,arm-linux-gnueabihf-g ++在host&#s; / lib /目录中查找libs,而不是sysroot&#39。出现这种行为的原因以及如何解决这个问题?我最好的选择是安装的sysroot中的符号链接已损坏,但是我已经手动改变了&#34; libc.so.6&#34;一,输出仍然相同。 为了澄清,主机和目标正在运行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 

1 个答案:

答案 0 :(得分:1)

显然,添加-no-gcc-sysroot参数以进行配置工作。