Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
 Аватар для Jman
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860

Сборка через makefile gstreamer плеера

06.08.2018, 12:16. Показов 3134. Ответов 38
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет, под линуксом не работал раньше. Нашел пример плеера с использованием gstreamer. Клонировал репозиторий пытаюсь в директории выполнить make! А там валят ошибки (на скрине). Собираю на виртуальной машине. Я установил пакеты gtk2.0, libgstreamer1.0-dev, libgstreamer-plugins-base1.0-dev,
Собственно сам Makefile
Кликните здесь для просмотра всего текста

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
CC := gcc
 
EXTRA_WARNINGS := -Wextra -ansi -std=c99 -Wno-unused-parameter
 
GST_LIBS := $(shell pkg-config --libs gstreamer-1.0 gstreamer-interfaces-1.0)
GST_CFLAGS := $(shell pkg-config --cflags gstreamer-1.0 gstreamer-interfaces-1.0)
GTK_LIBS := $(shell pkg-config --libs gtk+-2.0)
GTK_CFLAGS := $(shell pkg-config --cflags gtk+-2.0)
 
CFLAGS := -ggdb -Wall $(EXTRA_WARNINGS)
 
gst-player: ui.o gst-backend.o
gst-player: CFLAGS := $(CFLAGS) $(GTK_CFLAGS) $(GST_CFLAGS)
gst-player: LIBS := $(LIBS) $(GTK_LIBS) $(GST_LIBS)
binaries += gst-player
 
all: $(binaries)
 
$(binaries):
    $(CC) $(LDFLAGS) $(LIBS) -o $@ $^
 
%.o:: %.c
    $(CC) $(CFLAGS) -o $@ -c $<
 
clean:
    rm -rf $(binaries)
    find . -name "*.o" | xargs rm -rf

Там один дядька в ишю написал следующее, но я не понимаю как это применить в текущем makefile.
Make-3.82 is failing because of the order of libraries is stricter than earlier.

Patch:
Кликните здесь для просмотра всего текста

C
1
2
3
4
5
6
7
8
9
10
11
12
13
diff --git a/Makefile b/Makefile
index 50b5a4d..591ed0a 100644
--- a/Makefile
+++ b/Makefile
@@ -17,7 +17,7 @@ binaries += gst-player
 all: $(binaries)
 
 $(binaries):
-       $(CC) $(LDFLAGS) $(LIBS) -o $@ $^
+       $(CC) $^ $(LDFLAGS) $(LIBS) -o $@
 
 %.o:: %.c
        $(CC) $(CFLAGS) -o $@ -c $<

Я пытался собрать через gcc, такая же петрушка...
Bash
1
gcc -Wall (мои сырцы) -o (выходные) `pkg-config --cflags --libs gdk gtk+-2.0 glib-2.0 gobject-2.0 gstreamer-1.0`
Помогите пожалуйста.
Миниатюры
Сборка через makefile gstreamer плеера  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.08.2018, 12:16
Ответы с готовыми решениями:

Сборка компактного аудио плеера читающего FLAC, MP3, WMA...
Приветствую Вас! Появилась необходимость сборки Hi-Fi аудио плеера, читающего популярные форматы FLAC, MP3, WMA и т.д. Компактных...

Компиляция через Makefile
Есть такой Makefile. Все работает хорошо, только есть проблема. Он все время вызывает main.exe (ну или то, что пропишу). Можно как-нибудь...

Make, makefile, simple makefile, hello_world
Всем привет! Разбираюсь с мэйк-файлами. Проблема следующая: не понятен сам принцип обработки целей. Сейчас я понимаю это...

38
1269 / 981 / 386
Регистрация: 02.09.2012
Сообщений: 3,030
07.08.2018, 16:07
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от grgdvo Посмотреть сообщение
файл отказался играть, мотивируя playbin2 backend failed
У меня нет установленных gst-плагинов, я не использую этот фреймворк, поэтому и не играет.

Цитата Сообщение от Jman Посмотреть сообщение
Я с ашим пытался, но снова не пошло.
Давайте что ли log-файл посмотрим
0
 Аватар для Jman
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
07.08.2018, 16:14  [ТС]
Выше сбрасывал лог с исходниками. Один в один с любым мейк файлом.

Добавлено через 6 минут
Пакеты установленные gtk2.0, libgstreamer1.0-dev, libgstreamer-plugins-base1.0-dev, а так же сам gstreamer-1.14.1.
Plagin details: /usr/lib/x86_x64-linux-gnu/gstreamer-1.0
0
1269 / 981 / 386
Регистрация: 02.09.2012
Сообщений: 3,030
07.08.2018, 16:15
Там ошибка в makefile. Надо аккуратнее следить за пробелами

Bash
1
2
jman@jman-VirtualBox:~/Player/newplayer/gstplayer$ make
gcc   -L/usr/include/gstreamer-1.0/-lgtk-x11-2.0
Перед -lgtk.... должен быть пробел
0
 Аватар для Jman
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
07.08.2018, 16:17  [ТС]
Да я с вашим уже пытаюсь, результат одинаков.
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
CC=gcc
 
EXTRA_WARNINGS=-Wall -W -Wformat-nonliteral -Wcast-align -Wpointer-arith \
               -Wbad-function-cast -Wmissing-prototypes -Wstrict-prototypes \
               -Wmissing-declarations -Winline -Wundef -Wnested-externs -Wcast-qual \
               -Wshadow -Wwrite-strings -Wno-unused-parameter -Wfloat-equal -pedantic -ansi -std=c99
 
GST_LIBS := $(shell pkg-config --libs gstreamer-1.0 gstreamer-video-1.0)
GST_CFLAGS := $(shell pkg-config --cflags gstreamer-1.0 gstreamer-video-1.0)
binaries=gst-player-1.0
 
GTK_LIBS := $(shell pkg-config --libs gtk+-2.0)
GTK_CFLAGS := $(shell pkg-config --cflags gtk+-2.0)
 
CFLAGS := -ggdb -Wall $(EXTRA_WARNINGS)
 
$(binaries): gstplayer.o gst-backend.o gst-frontend.o
$(binaries): CFLAGS := $(CFLAGS) $(GTK_CFLAGS) $(GST_CFLAGS)
$(binaries): LIBS := $(LIBS) $(GTK_LIBS) $(GST_LIBS)
 
all: $(binaries)
 
$(binaries):
        $(CC) $(LDFLAGS) $(LIBS) -o $@ $^
 
%.o:: %.c
        $(CC) $(CFLAGS) -o $@ -c $<
 
clean:
        rm -rf $(binaries)
        find . -name "*.o" | xargs rm -rf
0
1269 / 981 / 386
Регистрация: 02.09.2012
Сообщений: 3,030
07.08.2018, 16:22
Сделайте make clean, потом снова make.
Покажите все, что выводит
0
 Аватар для Jman
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
07.08.2018, 16:32  [ТС]
Сделал. Вот лог.
0
 Аватар для Jman
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
07.08.2018, 16:34  [ТС]
Положил в архив, а то форум не пускает свыше 20 Кб.
Вложения
Тип файла: zip Log.log.zip (3.0 Кб, 4 просмотров)
0
1269 / 981 / 386
Регистрация: 02.09.2012
Сообщений: 3,030
07.08.2018, 16:53
Факт.... не находит библиотек.
В строку 16 вставьте
Bash
1
LDFLAGS := -L...путь
путь - это полный путь до места, где лежат gtk, gdk и gst библиотеки. Поищите сами файлы по имени,которое после параметра -l указано.
В моей системе все по умолчанию стоит в /usr/lib64. Возможно у вас где-то в другом месте, поэтому и ошибка линковки.

Добавлено через 1 минуту
Если будет несколько разных путей, то перечислять -L через пробел
Bash
1
LDFLAGS := -L....путь1 -L...путь2
1
 Аватар для Jman
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
07.08.2018, 16:55  [ТС]
Буду пробовать. Спасибо.
0
1269 / 981 / 386
Регистрация: 02.09.2012
Сообщений: 3,030
07.08.2018, 16:55
Ошибка только здесь

Bash
1
gcc   -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype -lgstvideo-1.0 -lgstbase-1.0 -lgstreamer-1.0 -lgobject-2.0 -lglib-2.0 -o gst-player-1.0 gstplayer.o gst-backend.o gst-frontend.o
Эта строчка соответствует строке 24 в Makefile.
Поэтому больше ничего исправлять пока не надо. Только добавить -L
0
 Аватар для Jman
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
07.08.2018, 16:58  [ТС]
Сюда что ли -L?
Bash
1
2
$(binaries):
        $(CC) $(LDFLAGS) $(LIBS) -o $@ $^
Или
Bash
1
LDFLAGS := -L
0
1269 / 981 / 386
Регистрация: 02.09.2012
Сообщений: 3,030
08.08.2018, 00:03
В строку 16 в Makefile (после CFLAGS := ...) вставьте
Bash
1
LDFLAGS := -L...путь1 -L...путь2
Пути должны показывать туда, где лежат библиотеки: файлы libgtk-x11-2.0.so* или libgtk-x11-2.0.a и так далее для всех библиотек, которые указаны через параметр -l
1
 Аватар для Jman
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
08.08.2018, 09:35  [ТС]
Узнал путь gtk
Bash
1
2
sudo pkg-config --cflags gtk+-2.0
-pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16
Путь gstreamer
Bash
1
2
jman@jman-VirtualBox:~$ sudo pkg-config --cflags gstreamer-1.0
-pthread -I/usr/include/gstreamer-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include
Изменил сборку как вы сказали
Кликните здесь для просмотра всего текста

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
CC=gcc
 
EXTRA_WARNINGS=-Wall -W -Wformat-nonliteral -Wcast-align -Wpointer-arith \
               -Wbad-function-cast -Wmissing-prototypes -Wstrict-prototypes \
               -Wmissing-declarations -Winline -Wundef -Wnested-externs -Wcast-qual \
               -Wshadow -Wwrite-strings -Wno-unused-parameter -Wfloat-equal -pedantic -ansi -std=c99
 
GST_LIBS := $(shell pkg-config --libs gstreamer-1.0 gstreamer-video-1.0)
GST_CFLAGS := $(shell pkg-config --cflags gstreamer-1.0 gstreamer-video-1.0)
binaries=gst-player-1.0
 
GTK_LIBS := $(shell pkg-config --libs gtk+-2.0)
GTK_CFLAGS := $(shell pkg-config --cflags gtk+-2.0)
 
CFLAGS := -ggdb -Wall $(EXTRA_WARNINGS)
LDFLAGS := -L/usr/include/gstreamer-1.0 -L/usr/lib/x86_64-linux-gnu/glib-2.0/include -L/usr/include/gtk-2.0 -L/usr/lib/x86_64-linux-gnu/gtk-2.0/include -L/usr/include/gio-unix-2.0/ -L/usr/include/cairo -L/usr/include/pango-1.0 -L/usr/include/atk-1.0 -L/usr/include/cairo -L/usr/include/pixman-1 -L/usr/include/gdk-pixbuf-2.0 -L/usr/include/libpng16 -L/usr/include/pango-1.0 -L/usr/include/harfbuzz -L/usr/include/pango-1.0 -L/usr/include/glib-2.0 -L/usr/lib/x86_64-linux-gnu/glib-2.0/include -L/usr/include/freetype2 -L/usr/include/libpng16 -L/usr/include/freetype2 -L/usr/include/libpng16
 
$(binaries): gstplayer.o gst-backend.o gst-frontend.o
$(binaries): CFLAGS := $(CFLAGS) $(GTK_CFLAGS) $(GST_CFLAGS)
$(binaries): LIBS := $(LIBS) $(GTK_LIBS) $(GST_LIBS)
 
all: $(binaries)
 
$(binaries):
    $(CC) $(LDFLAGS) $(LIBS) -o $@ $^
 
%.o:: %.c
    $(CC) $(CFLAGS) -o $@ -c $<
 
clean:

Результат аналогичен, может не верно в мейк файле прописал пути?
0
1269 / 981 / 386
Регистрация: 02.09.2012
Сообщений: 3,030
08.08.2018, 10:12
Ааааааа!!! Ну откуда при линковке опять появляются include-ы???
Почему вы упорно для линковки пихаете --cflags????
Все, забыли про --cflags и include уже... нет уже их, скомпилировали их уже... есть объектный код
Теперь этот объектный код надо слинковать с библиотеками gtk, gdk и gst (это so-файлы или a-файлы, НО НЕ h-файлы, h-файлы - ЭТО НЕ БИБЛИОТЕКИ!!)
Я же уже написал один раз.
Пишу еще раз. Где у вас лежат файлы вида libgtk-x11-2.0.so* или libgtk-x11-2.0.a
Вот там где они лежат, эти пути надо через параметр -L поместить в LDFLAGS
0
 Аватар для Jman
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
08.08.2018, 10:22  [ТС]
Ну, так я же говорил изначально что файлы с расширением .о появляются. Я не догадывался, что компиляция прошла удачно из-за кучи ошибок в консоли. Получается, что крашусь я на этапе линковки. А SO файлы ж вроде лежать всегда в папках libs.
0
 Аватар для Jman
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
08.08.2018, 11:02  [ТС]
Нашел вроде где что лежит /usr/lib/x86_64-linux-gnu/.. Но что-то снова не так.
Bash
1
LDFLAGS := -L/usr/lib/x86_64-linux-gnu/ -L/usr/lib/x86_64-linux-gnu/gstreamer-1.0 -L/usr/lib/x86_64-linux-gnu/glib-2.0 -L/usr/lib/x86_64-linux-gnu/gtk-2.0
На скрине папки.
Миниатюры
Сборка через makefile gstreamer плеера   Сборка через makefile gstreamer плеера  
0
1269 / 981 / 386
Регистрация: 02.09.2012
Сообщений: 3,030
08.08.2018, 12:24
Цитата Сообщение от Jman Посмотреть сообщение
Но что-то снова не так.
Давайте лог, какие ошибки?? Точно нашлись имена файлов библиотек, как просит линковщик??
0
 Аватар для Jman
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
08.08.2018, 12:34  [ТС]
Исходники+лог+либы и мейк файлы в архиве.
Вложения
Тип файла: zip gstplayer.zip (130.9 Кб, 3 просмотров)
0
 Аватар для Jman
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
08.08.2018, 14:26  [ТС]
Я уже все пакеты установил
Bash
1
apt-get install libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools
Добавлено через 1 час 39 минут
Итак. Вуаля! Вот с таким мейк файлом все удалось
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
CC=gcc
 
EXTRA_WARNINGS=-Wall -W -Wformat-nonliteral -Wcast-align -Wpointer-arith \
               -Wbad-function-cast -Wmissing-prototypes -Wstrict-prototypes \
               -Wmissing-declarations -Winline -Wundef -Wnested-externs -Wcast-qual \
               -Wshadow -Wwrite-strings -Wno-unused-parameter -Wfloat-equal -pedantic -ansi -std=c99
 
GST_LIBS=`pkg-config --libs gstreamer-1.0` -lgstvideo-1.0
GST_CFLAGS=`pkg-config --cflags gstreamer-1.0`
GTK_LIBS=`pkg-config --libs gtk+-2.0`
GTK_CFLAGS=`pkg-config --cflags gtk+-2.0`
 
CFLAGS=-ggdb $(EXTRA_WARNINGS)
 
BINS=gst-player_os
 
all: $(BINS)
 
gst-player_os: gstplayer.c gst-backend.c gst-frontend.c
    $(CC) $+ $(CFLAGS) $(GTK_CFLAGS) $(GTK_LIBS) $(GST_CFLAGS) $(GST_LIBS) -o $@
 
clean:
    rm -rf $(BINS)
В папке с исходниками появился файл gst-player_os
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.08.2018, 14:26

Как создать makefile через CMD Windows 10?
Всем привет. В пути c:\test лежит main.cpp и CMakelist.txt, подскажите плиз какой командой в CMD создать makefile? В консоли пишу...

При запуске Makefile выдается ошибка "Makefile:2: recipe for target 'all' failed"
решила поучиться собирать проекты через мэйкфайлы. Пожалуйста, помогите разобраться all: g++ main.cpp -o philBlock.o ...

Подключение стационарного медиа плеера к компьютеру через wi-fi
Привет всем,пишу впервые на вашем форуме-поэтому строго не судите.Проблема заключается в следующем:мне подарили стационарный медиа плеер...

Уровень заряда через USB с плеера Intenso
У меня есть плеер но к сожалению шлейф к екрану не работает и я не могу посмотреть уровень заряда. Я решил написать приложение для...

Открыть веб-страницу (htm) при запуске приложения с помощью плеера (не через браузер).
Пjмогите, очень нужно, как из Flach, открыть фаил htm (фаил без адреса, то есть находится в папке с флешкой) код AS2, из самого Flash...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
39
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru