LINUX.ORG.RU

ARM: error while loading shared libraries: libQtGui.so.4: cannot open shared object file: No such file or directory

 , ,


0

2

Добрый вечер, уже неделю туплю с сабжем

скачал тулчейн, qt-everywhere, скомпилировал с таким конфигом


./configure -prefix /usr/local/qt-4.8.5-altera-soc -release -shared -nomake examples -nomake tools -nomake docs -make demos -xplatform qws/linux-arm-gnueabihf-g++ -embedded arm -little-endian -no-pch -v


подложил на девайс в каталог /usr/local/qt-4.8.5-altera-soc
добавил /usr/local/qt-4.8.5-altera-soc/lib в /etc/ld.so.conf
даже ldconfig сделал, но ни фига не пашет, свежескомпиленная прога с тем же Qt говорит "./untitled: error while loading shared libraries: libQtGui.so.4: cannot open shared object file: No such file or directory"

в чем проблема? может, кто-нить сталкивался? почему он не может найти то что у него «под носом»?


P.S.

root@socfpga:~# file untitled 
untitled: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.31, BuildID[sha1]=0xb45aa65ac3e9fa4c9798234dcc46163cf8f993c8, not stripped
root@socfpga:~# file /usr/local/qt-4.8.5-altera-soc/lib/libQtGui.so.4.8.5 
/usr/local/qt-4.8.5-altera-soc/lib/libQtGui.so.4.8.5: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, BuildID[sha1]=0x54f1ca8ccad61a719eb888b0c03ffb6f82140346, not stripped
root@socfpga:~# file /usr/local/qt-4.8.5-altera-soc/lib/libQtGui.so.4     
/usr/local/qt-4.8.5-altera-soc/lib/libQtGui.so.4: symbolic link to `libQtGui.so.4.8.5'

А если сделать предварительно?

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/qt-4.8.5-altera-soc/lib/

Dead ★★★★
()
Ответ на: комментарий от Dead

да делал раз дцать - не помогает...
похоже, что проблема в том, что тулчейн gcc-linaro-arm-linux-gnueabihf, а я пытаюсь его завести на debian7, которая просто gnueabi... я прав? их нужно подружить? тогда, как?

upd: ща попробую разнести по разным каталогам и прописать их в ld.so.conf...

metawishmaster ★★★★★
() автор топика
Последнее исправление: metawishmaster (всего исправлений: 1)
Ответ на: комментарий от metawishmaster

Тогда из за того, что либо тулчейны разные, либо флаги сборки разные (типы -fPIC и т.п.). Если через strace запустить, то видно что qt либы открываются?

Dead ★★★★
()
Ответ на: комментарий от Dead

да, было видно, что libQtGui открылся, но все-равно потом облом

сейчас скопировал либы от тулчейна, прописал в ld.so.conf.d

root@socfpga:~# cat /etc/ld.so.conf.d/arm-linux-gnueabihf.conf 
# Multiarch support
/lib/arm-linux-gnueabihf
/usr/lib/arm-linux-gnueabihf
root@socfpga:~# cat /etc/ld.so.conf                            
include /etc/ld.so.conf.d/*.conf
/usr/local/qt-4.8.5-altera-soc/lib
/usr/lib
/usr/local/lib

и теперь
root@socfpga:~# ./untitled -qws
-bash: ./untitled: No such file or directory


ну... непонятный результат - тоже результат %)
но теперь открыть либы уже и не пытается:
root@socfpga:~# strace ./untitled -qws
execve("./untitled", ["./untitled", "-qws"], [/* 16 vars */]) = -1 ENOENT (No such file or directory)
dup(2)                                  = 3
fcntl64(3, F_GETFL)                     = 0x20002 (flags O_RDWR|O_LARGEFILE)
fstat64(3, {st_mode=S_IFCHR|0600, st_rdev=makedev(136, 0), ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76fc3000
_llseek(3, 0, 0x7eee48c8, SEEK_CUR)     = -1 ESPIPE (Illegal seek)
write(3, "strace: exec: No such file or di"..., 40strace: exec: No such file or directory
) = 40
close(3)                                = 0
munmap(0x76fc3000, 4096)                = 0
exit_group(1)                           = ?

metawishmaster ★★★★★
() автор топика
Ответ на: комментарий от metawishmaster

root@socfpga:~# ./untitled -qws -bash: ./untitled: No such file or directory

Такое поведение обычно, когда бинарь «не той системы» :)

Dead ★★★★
()
Ответ на: комментарий от metawishmaster

похоже, что проблема в том, что тулчейн gcc-linaro-arm-linux-gnueabihf, а я пытаюсь его завести на debian7, которая просто gnueabi.

если это так то работать не будет и не должно из-за разных ABI, проверь readelf-ом на PC

readelf -A библиотека_libc

readelf -A библиотека_qt

например

$ readelf -A libc-2.21.so | grep Tag_ABI_VFP_args
  Tag_ABI_VFP_args: VFP registers

это ABI hardfp, если тут пусто - softfp, у библиотек должно быть либо у всех пусто либо у всех густо :)

anonymous
()
Ответ на: комментарий от anonymous

у «подложенной» libc - hardfp (так вот что такое gnueabiHF %), и у libQtGui.so.4.8.5 - hardfp

а сама система - soft, вот она где засада, спасибо :)

// ща попробую все перекомпилить softfp...

metawishmaster ★★★★★
() автор топика
Последнее исправление: metawishmaster (всего исправлений: 3)
Ответ на: комментарий от I-Love-Microsoft

на самом деле, путь-то правильный, но тут девайс довольно жирненький... и OE для него - это как из пушки по воробьям...

OE с uLibc, помню, хорошо подошел к фигнюшке с 32-мя метрами оперативки, к которой X-server нужно было присобачить :)
busybox и kdrive - вот где сила! :))

metawishmaster ★★★★★
() автор топика
Последнее исправление: metawishmaster (всего исправлений: 3)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.