|
3 / 3 / 1
Регистрация: 16.02.2011
Сообщений: 157
|
|||||||||||||||||||||
Как настроить CMake для поиска библиотек FFmpeg30.03.2022, 07:35. Показов 4886. Ответов 8
Мало понимаю в разработке под Linux и CMake, поэтому делаю пока что как привык для Windows.
Не могу разобраться использовать сторонние библиотеки. Я пытаюсь собрать приложение с использованием ffmpeg библиотек. Скачал shared библиотеки (ffmpeg-n4.4-latest-linux64-gpl-shared-4.4.tar.xz). Структура проекта такая:
Если я правильно понял, то программа не понимает где искать ему библиотеки. Прочитал про LD_LIBRARY_PATH. Сделал так в терминале: export LD_LIBRARY_PATH=/home/ilya/src/ffmpeg-test/bin Таким способом заработало. В общем я не могу разобраться как в линуксе поиск библиотек происходит и что с этим делать всем. Добавлено через 2 минуты Кстати если посмотреть через ldd какие у него зависимости:
0
|
|||||||||||||||||||||
| 30.03.2022, 07:35 | |
|
Ответы с готовыми решениями:
8
CMake, построение библиотек Ffmpeg конфликт библиотек |
|
Windows must die
|
|||||||
| 30.03.2022, 09:22 | |||||||
|
А дальше все элементарно:
0
|
|||||||
|
3 / 3 / 1
Регистрация: 16.02.2011
Сообщений: 157
|
|||||||
| 30.03.2022, 13:03 [ТС] | |||||||
|
я поставил ffmpeg: apt install ffmpeg и теперь такое:
0
|
|||||||
|
Windows must die
|
||||||||
| 30.03.2022, 13:38 | ||||||||
media-video/ffmpeg. Что там в бубунтах — знать не знаю и не хочу! Я мастдайкой предпочитаю не пользоваться.Но, насколько помню, мейнейнеры бубунты — те еще дегенераты. И они разделили все пакеты на два-три. Библиотеки делятся минимум на 2 (маразм, но таки): lib-пакет и dev-пакет (во втором заголовочные файлы, как будто бы без них можно библиотеки использовать! Дебилы, блин!!!).
0
|
||||||||
|
3 / 3 / 1
Регистрация: 16.02.2011
Сообщений: 157
|
|
| 30.03.2022, 13:48 [ТС] | |
|
Я честно говоря ничего не понял из ваших объяснений. Почему я не могу скачать готовые билды библиотеки и использовать их? чем они отличаются тем что будет из менеджера пакетов ?
0
|
|
|
Windows must die
|
||
| 30.03.2022, 14:14 | ||
|
А компилять из исходников — совсем уж не true-way, когда все есть в репах дистра!!1111 И да, крайне рекомендую использовать вменяемый дистрибутив для разработчика: Calculate или Gentoo. В отличие это всяких мастдаек, его мейнтейнеры не считают пользователя дегенератом, о которого можно ноги вытирать!
0
|
||
|
3 / 3 / 1
Регистрация: 16.02.2011
Сообщений: 157
|
|||||||||||
| 30.03.2022, 14:48 [ТС] | |||||||||||
|
Оставьте своё мнение при себе. Кому чем удобнее. А иногда даже выбирать не приходится.
Добавлено через 30 минут так я попытался сделать через pkg-config. но теперь он вообще не компилирует:
0
|
|||||||||||
|
Windows must die
|
||||||
| 30.03.2022, 16:09 | ||||||
|
Serpico, ты всю строчку напиши, как скомпилировать пытаешься! Потому как ты стопудово не указываешь, какие нужно библиотеки подключить.
Добавлено через 1 минуту Вот, у меня все работает с твоим файлом:
0
|
||||||
|
2735 / 890 / 331
Регистрация: 10.02.2018
Сообщений: 2,113
|
|
| 30.03.2022, 17:07 | |
|
Serpico, привет собрату по пересаживанию с винды на линуксы. Хоть меня это не накрыло ещё в полной мере, но уже приходится понемногу разбираться. Советы линукс-гуру в подобных темах порой выглядят как издевательство. Ну, что есть, то есть. Приходится искать в этом изливаемом на наши головы праведном гневе зерна знаний. Хочу поделиться своим видением проблемы, как виндусоид виндусоиду, хотя могу и ошибаться в чём-то.
Во-первых, виндовс и линукс разнятся гораздо сильнее чем может казаться на первый взгляд. Переход от одной ОС к другой может потребовать не перекомпиляции с косметическими правками, а гораздо более значительных изменений архитектуры приложения. Внутренний компилятор. Ядро линукса собирается на определённой версии компилятора. Куча библиотек оказывается завязана именно на этот компилятор. Крайне желательно (обязательно), что бы ваше приложение и все используемые им библиотеки собиралось именно этим компилятором. Если компилятор не поддерживает нужного стандарта языка, то упс. Переписывайте код или ищите другое ядро. При смене версии ядра версия компилятора может меняться. Это не виндовс, где вы можете поставить визуальную студию любой версии и собирать на ней свою программу. Библиотеки (настоятельно) принято размещать в общем пуле библиотек. Идеология винды с подкладывание библиотек к исполняемому файлу абсолютно не приветствуется. К этому общему пулу библиотек прилагается своя система версионности. К имени файла добавляется номер версии и там же создаются укороченные символьные линки (идентичное имя, но без части цифр в версии). Программа подгружает библиотеку по короткому имени, а система уже подменяет имя на нужную версию библиотеки. Такая кухня потянула за собой необходимость грамотно копаться в этой огромной куче библиотек. Этим и занимаются пакетные менеджеры. Они подкачивают правильные версии библиотек (под ваш компилятор ядра), разворачивают их в общем пуле, создают символьные линки, удаляют и т.д. и т.п. Может оказаться, что для вашего линукса нет нужного ffmpeg. Не под все линуксы он собирается и распространяется. В этом случае нельзя скачать с интернета готовое абы что и закинуть к своему приложению. ffmpeg внутри себя подключает другие библиотеки и если их не окажется или их версии окажутся не верными, то это все даже не скомпилируется. Ведь в линуксе не используется отдельный lib-файл, вместо него выступает сама библиотека. При отсутствии нужных зависимостей ругань начнётся при компиляции. В отсутствии готового пакета правильным будет выкачать исходники и скомпилировать их под своё ядро. SO (шаред обжект) это не DLL (динамик линк лайбрари). Хоть и предназначены они примерно для одной цели, но есть и отличия. Для меня DLL всегда была черным ящиком. Я что-то напихал туда, вытащил наружу пару методов, скомпилировал статически и дальше не парюсь вопросами бинарной совместимости. В процессе разработки меняю DLL и не трогаю программу и связка продолжает работать пока я не поменяю API. В линуксе же, как я понимаю, такое не прокатит. Изменение библиотеки без затрагивания API может привести к потери бинарной совместимости ABI. По умолчанию из SO наружу торчит ВСЁ, а не только моё API. Кроме того внутренняя архитектура SO требует дополнительных действий с адресами переменных (PIC - Position-independent code). Это может казаться не заметным при кодинге, но лишь пока вы не захотите компилировать с проектом асемблерные куски. Очень вероятно, что то что прекрасно работало под виндой придётся малость переписать.
0
|
|
| 30.03.2022, 17:07 | |
|
Помогаю со студенческими работами здесь
9
подключение библиотек через CMake
Статическая линковка библиотек через cmake Подключение библиотек с github в CMake проекты VS Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
|
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo
Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло.
Но на выплатах по больничным это. . .
|
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
|
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y
Z4Tv2zpXVVo
https:/ / github. com/ shumilovas/ med2. git
|
|
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа.
В качестве фильтра для отбора справочника служит группа номенклатуры.
Отбор по наименованию группы. . .
|
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
|
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс.
Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
|
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа.
В качестве фильтра для отбора служит значение перечислений.
/ / Событие "НачалоВыбора" реквизита на форме. . .
|