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

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

06.08.2018, 12:16. Показов 2702. Ответов 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
1263 / 977 / 384
Регистрация: 02.09.2012
Сообщений: 3,021
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
1263 / 977 / 384
Регистрация: 02.09.2012
Сообщений: 3,021
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
1263 / 977 / 384
Регистрация: 02.09.2012
Сообщений: 3,021
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
1263 / 977 / 384
Регистрация: 02.09.2012
Сообщений: 3,021
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
1263 / 977 / 384
Регистрация: 02.09.2012
Сообщений: 3,021
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
1263 / 977 / 384
Регистрация: 02.09.2012
Сообщений: 3,021
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
1263 / 977 / 384
Регистрация: 02.09.2012
Сообщений: 3,021
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
1263 / 977 / 384
Регистрация: 02.09.2012
Сообщений: 3,021
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
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru