LINUX.ORG.RU

Как присоединить прилинковать библиотеки .so при кросс-компиляции Rpi?

 ,


0

1

Запустил проект QDeviceWatcher он позволяет детектировать подключение и отключение USB флешки. Он создал .so файлы куда их нужно положить или как их добавить к qt чтобы заработали в другом проекте.

Вот подписался я на тег raspberry pi. Думал, будут обсуждения интересных проектов и крутых аксессуаров. В итоге постоянно вижу уведомления с вопросами, которые принято задавать Гуглу, от одного и того же человека. Kali-какеры ушли на Raspberry Pi?

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

Был тут наплыв мамкиных хацкеров, которым ютуб-блогеры уши прожужжали, что Kali – крутой дистрибутив для взлома. В итоге задавали тут детские вопросы вида «как настроить», «как обновить», «как поставить xyz». Взять Linux попроще – нет, не слышал. Поизучать информационную безопасность – это для ботанов. Лучше накачу себе Kali, буду пытаться им пользоваться, как виндой, ломать соседский вайфай, понтоваться перед одноклассниками и бегать на форум по каждому чиху.

А сейчас три уведомления подряд – от человека, который якобы взял себе малинку, чтобы программировать, но маны читать не пытался, в Гугле забанен, в декомпозицию задач не умеет. Зато умеет превращать форум в филиал «Ответов Mail.ru», где в основном сидят забаненные в Гугле и постят тупняк.

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

якобы взял себе малинку, чтобы программировать, но маны читать не пытался, в Гугле забанен, в декомпозицию задач не умеет. Зато умеет превращать форум в филиал «Ответов Mail.ru», где в основном сидят забаненные в Гугле и постят тупняк.

А я задрался смотреть на таких как ты, которые в технических темах вместо того, чтобы ответить на вопрос, разводят флуд и переходят на личные оскорбления пользователей. Иди ка ты в пень куда подальше с моего Лора!

По теме: я знаю два варианта.

1. Положить so-шники рядом с бинарником. Вроде как должны подхватиться.

2. Положить so-шники в подкаталог ./lib относительно бинарника. Но нужно учитывать, что некоторые so-ники, отвечающие за особенности платформы, следует ложить в каталог ./platforms. Пример такого so-шника - libqxcb.so.

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

#!/bin/bash

# Каталог, где запускается данный скрипт
PROGDIR=$(dirname $(readlink -e $0))

# В набор путей поиска библиотек добавляется ./lib
LD_LIBRARY_PATH=$PROGDIR/lib:${LD_LIBRARY_PATH}

# Измененный набор путей поиска библиотек распихивается
# во все дочерние процессы оболочки как переменная окружения
export LD_LIBRARY_PATH

# Создается переменная окружения, указывающая где искать
# платформо-зависимые плагины
export QT_QPA_PLATFORM_PLUGIN_PATH=$PROGDIR/platforms

# Запускается программа
$PROGDIR/my_programm

Но этого может оказаться недостаточным. Qt не был бы Qt-ом, если бы было все так просто. В зависимости от того, какие части Qt были использованы, рядом с бинарником надо ложить еще и другие поддиректории с библиотеками. Например:
/iconengines
    libqsvgicon.so
/imageformats
    libqgif.so 
    libqicns.so
    libqico.so 
    libqjpeg.so
    libqsvg.so 
    libqtga.so 
    libqtiff.so
    libqwbmp.so
    libqwebp.so
/printsupport
    libcupsprintersupport.so

Их никак не нужно дополнительно прописывать, бинарник сам будет искать их в вышеуказанных поддиректориях.

Данные библиотеки справдливы для периода ~Qt5.9.x-5.10.x. В других подверсиях их состав и принцип использования могут отличаться.

Xintrea ★★★★★
()
Ответ на: комментарий от Xintrea
  1. Положить so-шники рядом с бинарником. Вроде как должны подхватиться.

У меня никогда не находил либы без дополнительного пинка линкеру в виде создания файлика с путем в /etc/ld.so.conf.d и вызова ldconfig для пере-индексации всех имеющихся либ и создания кэша линкера. После этого линкер знает о наличии указанных либ.

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

Иди ка ты в пень куда подальше с моего Лора!

А не ел ли ты сегодня уху?

в технических темах … разводят флуд

Каков вопрос, таков и ответ. Где ссылка на используемую библиотеку? Где описание попыток что-то сделать с библиотекой?

По поводу твоих советов – это бестолковая фигня, да ещё с ошибками. Просто ты решил блестнуть не вникая в проблему и сел в лужу.

Это не плагин, а обычная библиотека и ещё можно сделать или статической или общей. Смотри как это сделано в примерах.

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

А я задрался смотреть на таких как ты, которые в технических темах вместо того, чтобы ответить на вопрос, разводят флуд и переходят на личные оскорбления пользователей.

Kali-какир – оскорбление? Нет, это всего лишь определение человека, который выбрал заведомо неправильную стратегию. Причем, если ты не заметил, это было не утверждение, а вопрос. То есть, я предложил человеку самоопределиться.

Иди ка ты в пень куда подальше с моего Лора!

Чтобы не мешать вопрошалам, которые ничего не пытались искать, изучать и предпринимать сами, и отвечалам, которые дают советы наобум, не удосужившись проверить свое решение, если не очень разбираются в теме? Филиал «Ответов Mail.ru», говорю же.

Vidrele ★★
()

Казалось бы, существование некой «документации» - давно развенчано. Ан нет, определённый контингент всё ещё неспособен смириться с этим фактом.

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

По поводу твоих советов – это бестолковая фигня, да ещё с ошибками.

Ошибки, конечно же, остались только у тебя в голове.

Просто ты решил блестнуть не вникая

Блеснуть. Привильно писать - блеснуть. Просто ты своим недоразвитым умишкой не можешь охватить корень проблемы, не говоря уже о полноте картины. Я же имею опыт самостоятельной сборки своих Qt-программ и делюсь опытом. И еще я собираю по теме статьи других пользователей:

https://webhamster.ru/mytetrashare/index/mtb0/1447075773u58qq2ja6i
https://webhamster.ru/mytetrashare/index/mtb0/1513955425rbqc02nxna
https://webhamster.ru/mytetrashare/index/mtb0/1520159892ajbtewhp5y
https://webhamster.ru/mytetrashare/index/mtb0/1527189472rbt8ecyx9b
https://webhamster.ru/mytetrashare/index/mtb0/1527189543tn00uimnr7
https://webhamster.ru/mytetrashare/index/mtb0/16442416916p1v4pel9k

Можешь ли ты продемонстрировать свои ресурсы, клоун? Это был риторический вопрос, все равно ты уже в игноре.

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

Конечно же у меня нет кучи статей с описанием костылей из-за незнания документации. Я просто собираю приложение как рекомендует Qt и оно работает без танцев с бубном.

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

У меня никогда не находил либы без дополнительного пинка линкеру

Всё по стандарту, текущий каталог, как и каталог исполнимого файла, никогда не считался безопасным местом для поиска библиотек в Linux.

Чтобы программа искала библиотеки рядом с собой надо:

  • План А: при компиляции заполнять секцию DT_RPATH (или DT_RUNPATH), т.е. добавлять флаг типа: --rpath="\$ORIGIN"

  • План Б: выставить переменную окружения LD_LIBRARY_PATH.

  • План В: твой вариант с кешем ldconfig.

  • И план Г (гадский): положить программу и библиотеку в стандартный каталог /lib или /usr/lib. 😐

raspopov
()