[英]/lib/libc.so.6: version `GLIBC_2.9' not found error while installing Qt5 on Linux
[英]Incompatible libc.so.6 Found During Cross-Compilation of Qt5 OpenGL Test for i.MX6
我正在嘗試為飛思卡爾i.MX6處理器交叉編譯Qt5。 我已經使用最新的Yocto包構建了一個圖像。
在編譯qtbase之前,首先通過編譯一些OpenGL代碼來運行OpenGL功能測試。 但是,在此測試期間,編譯器會抱怨找到了不兼容的libc.so.6
。
我在另一篇文章(目前我找不到)中發現,發生這樣的錯誤是因為/lib/libc.so.6
實際上是一個指向實際共享對象文件的符號鏈接。 但是,編譯器不使用libc.so.6
指向的共享對象文件,而是嘗試鏈接到符號鏈接本身,從而導致兼容性問題。
以下是configure
腳本運行時的輸出:
OpenGL ES 2.x auto-detection... ()
/home/Desktop/poky-dylan-9.0.0/build/tmp/sysroots/x86_64-linux/usr/bin/armv7a-vfp-neon-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++ -c -pipe -mfloat-abi=softfp -O2 -O2 -march=armv7-a -mfpu=neon -DLINUX=1 -DEGL_API_FB=1 -Wall -W -fPIE -I../../../mkspecs/devices/linux-imx6-g++ -I. -I/home/Desktop/poky-dylan-9.0.0/build/tmp/deploy/images/mountpoint/usr/include -o opengles2.o opengles2.cpp
/home/Desktop/poky-dylan-9.0.0/build/tmp/sysroots/x86_64-linux/usr/bin/armv7a-vfp-neon-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++ -Wl,-rpath-link,/home/Desktop/poky-dylan-9.0.0/build/tmp/deploy/images/mountpoint/usr/lib -Wl,-O1 -o opengles2 opengles2.o -L/home/Desktop/poky-dylan-9.0.0/build/tmp/deploy/images/mountpoint/usr/lib -lGLESv2 -lEGL -lGAL
/home/Desktop/poky-dylan-9.0.0/build/tmp/sysroots/x86_64-linux/usr/libexec/armv7a-vfp-neon-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/4.7.2/ld: skipping incompatible /lib/libc.so.6 when searching for /lib/libc.so.6
/home/Desktop/poky-dylan-9.0.0/build/tmp/sysroots/x86_64-linux/usr/libexec/armv7a-vfp-neon-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/4.7.2/ld: cannot find /lib/libc.so.6
/home/Desktop/poky-dylan-9.0.0/build/tmp/sysroots/x86_64-linux/usr/libexec/armv7a-vfp-neon-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/4.7.2/ld: skipping incompatible /usr/lib/libc_nonshared.a when searching for /usr/lib/libc_nonshared.a
/home/Desktop/poky-dylan-9.0.0/build/tmp/sysroots/x86_64-linux/usr/libexec/armv7a-vfp-neon-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/4.7.2/ld: cannot find /usr/lib/libc_nonshared.a
/home/Desktop/poky-dylan-9.0.0/build/tmp/sysroots/x86_64-linux/usr/libexec/armv7a-vfp-neon-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/4.7.2/ld: cannot find /lib/ld-linux.so.3
collect2: error: ld returned 1 exit status
gmake: *** [opengles2] Error 1
OpenGL ES 2.x disabled.
The OpenGL ES 2.0 functionality test failed!
這是我用來為configure
腳本提供正確選項的腳本:
#!/bin/sh
./configure -v -opensource -confirm-license -no-pch -opengl es2 \
-make libs -device imx6 \
-make examples -make demos \
-device-option CROSS_COMPILE=/home/Desktop/poky-dylan-9.0.0/build/tmp/sysroots/x86_64-linux/usr/bin/armv7a-vfp-neon-poky-linux-gnueabi/arm-poky-linux-gnueabi- \
-sysroot /home/Desktop/poky-dylan-9.0.0/build/tmp/deploy/images/mountpoint -no-gcc-sysroot \
-prefix /opt/qt5
目前,我正在考慮將實際的共享對象文件重命名為libc.so.6
,但這似乎不是解決問題的好方法。
看來你正在編譯錯誤的libc。 正確的libc的位置應該是:/home/Desktop/poky-dylan-9.0.0/build/tmp/deploy/images/mountpoint/lib/你能檢查一下嗎? 在該文件夾中運行:
文件libc.so.6
看看架構是否正常。 我沒有在我面前的消息來源,所以如果出現問題請提供反饋。
您的應用程序是在chroot環境中編譯的(請參閱man chroot)。 文件夾/home/Desktop/poky-dylan-9.0.0/build/tmp/deploy/images/mountpoint充當應用程序的新根文件夾。 這是在configure腳本的-sysroot選項中配置的。 這對gcc無效,因為-no-gcc-sysroot已啟用。 因此,鏈接器正在查找您的native / lib /文件夾以查找庫。 他們當然不在那里。
那么,你可以嘗試以下事項:
1)刪除configure腳本中的-no-gcc-sysroot選項。 再次配置並嘗試制作。
2)這可能會失敗,因為編譯器找不到它自己的組件。 請將編譯器的目錄安裝到chroot環境中。 運行下一個命令:
mkdir /home/Desktop/poky-dylan-9.0.0/build/tmp/deploy/images/mountpoint/usr/bin -p
mount --bind /home/Desktop/poky-dylan-9.0.0/build/tmp/sysroots/x86_64-linux/usr/bin/ /home/Desktop/poky-dylan-9.0.0/build/tmp/deploy/圖片/掛載點在/ usr / bin中
再次配置,然后再次嘗試。
3)如果仍然無法正常工作,則交叉編譯器設置不正確。 將配置腳本參數列表更改為CROSS_COMPILE參數:
CROSS_COMPILE =的/ usr /斌/ armv7a-VFP氖-狹小-Linux的gnueabi /臂-狹小-Linux的gnueabi-
祝你好運。 如果它正常工作,請告訴我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.