Кросс-компиляция Qt для Embedded Arm: libpthread.so.0 не найдена - PullRequest
1 голос
/ 13 мая 2011

Я пытаюсь выполнить кросс-компиляцию Qt с WebKit для встроенного устройства arm (процессор freescale). У меня есть набор инструментов arm-none-linux-gnueabi.

Qt на самом деле скомпилирован, но у меня возникли проблемы при попытке скомпилировать демонстрационные версии, в частности, WebKit, и это действительно то, что мне нужно.

Первая проблема, с которой я столкнулся, заключалась в том, что libjscore не был найден, что было ошибкой из-за способа, которым Qt обрабатывает статические сборки. Оказывается, вы можете скопировать библиотеку, и она работает, см. здесь .

Теперь компиляция снова прерывается, говоря, что она не может найти libpthread.so.0, что может показаться проблемой с цепочкой инструментов, а не проблемой Qt.

При поиске дерева каталогов в моем наборе инструментов, есть несколько libpthreads. Копия находка | grep libpthread ниже вывод команды для справки.

./arm-none-linux-gnueabi/sysroot/vfp/lib/libpthread-2.5.so
./arm-none-linux-gnueabi/sysroot/vfp/usr/lib/libpthread_nonshared.a
./arm-none-linux-gnueabi/sysroot/vfp/usr/lib/libpthread.a
./arm-none-linux-gnueabi/sysroot/vfp/usr/lib/libpthread.so_orig
./arm-none-linux-gnueabi/sysroot/vfp/usr/lib/libpthread.so
./arm-none-linux-gnueabi/sysroot/lib/libpthread-2.5.so
./arm-none-linux-gnueabi/sysroot/usr/lib/libpthread_nonshared.a
./arm-none-linux-gnueabi/sysroot/usr/lib/libpthread.a
./arm-none-linux-gnueabi/sysroot/usr/lib/libpthread.so_orig
./arm-none-linux-gnueabi/sysroot/usr/lib/libpthread.so

Так что, похоже, что-то странное с компоновщиком? Кроме того, что нужно создать символическую ссылку для создания libpthread.so.0 ?

Примечание: _libpthread.so_orig_ и libpthread.so следуют этому fix .

Любая помощь или предложения очень ценятся. Я уже два дня бьюсь головой о стену.

Спасибо

Ответы [ 2 ]

1 голос
/ 10 июня 2011

В общем, вы должны убедиться, что созданная вами цепочка инструментов (или была создана для вас) находится на том же пути, по которому она была построена.Библиотеки (* .so * .a) также должны находиться по тому же оригинальному пути.Он должен выглядеть следующим образом:

<path>/bin
<path>/usr/lib
<path>/lib

Эти папки не следует перемещать.Исполняемые файлы цепочки инструментов находятся в «bin», а библиотеки, которые он ищет, находятся в «../usr/lib и ../lib».Кроме того, <path> может быть каким-то образом жестко запрограммирован в ваших двоичных файлах gcc.Кажется, что движение его ломает вещи.

0 голосов
/ 11 сентября 2016

Целью является малиновый пи Я копирую целевой каталог lib в myuserdirectory target / usr / lib для моего кросс-компилятора / usr / lib / Directorie target / lib мой кросс-компилятор / lib / Directorie

Я создаю две символические ссылки:

ln -s /yourcrosscompilerusrlibdirectory /usr/lib/arm-linux-gnueabihf
ln -s /yourcrosscompilerusrdirectory /lib/arm-linux-gnueabihf

и это работа для меня libpthread в /yourcrosscompilerusrlibdirectory

...