LINUX.ORG.RU

bbqscreen_client

 , , , ,


0

1

Есть приложение показывающее изображение со смартфона на PC. Так вот, у меня не получается ее установить.

https://github.com/xplodwild/bbqscreen_client

qmake BBQScreenClient2.linux.pro
Project MESSAGE: You are running qmake on a generated .pro file. This may not work!
RCC: Warning: No resources in 'mainwindow.qrc'.

Последние строки ответа make

/usr/local/lib/libswscale.a(swscale.o): In function `emms_c':
/home/jessica/Документы/client_linux_x86_2.2.0/ffmpeg/./libavutil/x86/emms.h:37: undefined reference to `av_get_cpu_flags'
/usr/local/lib/libswresample.a(resample.o): In function `multiple_resample':
/home/jessica/Документы/client_linux_x86_2.2.0/ffmpeg/libswresample/resample.c:315: undefined reference to `av_get_cpu_flags'
/usr/local/lib/libswresample.a(resample.o): In function `emms_c':
/home/jessica/Документы/client_linux_x86_2.2.0/ffmpeg/./libavutil/x86/emms.h:37: undefined reference to `av_get_cpu_flags'
collect2: error: ld returned 1 exit status
make: *** [Linux/BBQScreenClient2] Ошибка 1


Ответ на: комментарий от fish_ka

libqt5widgets5 libqt5gui5 libqt5core5 libqt5opengl5 libqt5multimedia5 libavcodec55 libavdevice55 libavfilter3 libavformat55 libavutil52 libswscale2 libswresample0

вроде эти пакеты надо было установить, так я их установила

jessgt
() автор топика
Ответ на: комментарий от jessgt

Install ffmpeg libraries: apt-get install libavcodec-dev libavformat-dev libavutil-dev libswscale-dev

anonymous
()
Ответ на: комментарий от fish_ka

Очень странно, теперь и -dev установились, до этого не ставились. Но при выполнение команды make вылазиет ошибка, та же самая которую я описала в первом сообщении

jessgt
() автор топика
Ответ на: комментарий от jessgt

Тогда можно попробовать включить путь к инклудам для библиотек libav*. Для этого нужно открыть BBQScreenClient2.linux.pro , и после INCLUDEPATH += добавить строчки

INCLUDEPATH += -I/usr/include/libavcodec 
INCLUDEPATH += -I/usr/include/libavformat 
INCLUDEPATH += -I/usr/include/libavutil

Т.е. получится что-то вроде :

INCLUDEPATH += ./GeneratedFiles \
    . \
	./QTFFmpegWrapper \
    ./GeneratedFiles/Debug \
    $(QTDIR)/../qtmultimedia/include/QtMultimedia \
    $(QTDIR)/../qtmultimedia/include
INCLUDEPATH += -I/usr/include/libavcodec 
INCLUDEPATH += -I/usr/include/libavformat 
INCLUDEPATH += -I/usr/include/libavutil

fish_ka
()
Ответ на: комментарий от jessgt

Надо переконфигурировать проект. Т.е. сделать примерно так:

$ rm `find -name Makefile` #опционально, если не сработает просто qmake
$ qmake
$ make
Ну, это конечно если ты так не делалала.

batbko
()

1. Ты собирала ffmpeg собственными силами, поскольку проекту требуются библиотеки, которые отсутствуют в репозитории (Xu|U)buntu?
Откуда такие пути: client_linux_x86_2.2.0/ffmpeg/./libavutil/x86/?

2. Проект сам достаточно странный: BBQScreenClient2.linux.pro.
2.1. PRECOMPILED_HEADER = stdafx.h
2.2. К проекту линкуется libswresample, которая отсутствует в репозиториях, об ее установке автор скромно умолчал:

Compiling on Debian/Ubuntu:
Install QT5 (libqt5-dev, or from source from qt-project.org)
Install ffmpeg libraries: apt-get install libavcodec-dev libavformat-dev libavutil-dev libswscale-dev
Run: qmake BBQScreenClient2.linux.pro
Run: make
The final binary will be built at ./Linux/BBQScreenClient2

Поэтому смело открывай на гитхабе issue и описывай (на английском) все свои проблемы. Автор должен оперативно ответить. А заодно ты поможешь OpenSource-сообществу.

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

batbko, там ошибка линковки в libswresample.a, которую каким-то образом ТС установила себе в систему (библиотека отсутствует в убунтовских репозиториях, пруф). Я это к тому, что переконфигурированием проекта не отделаешься.

jessgt, скажи пожалуйста, каким образом была установлена библиотека libswresample?

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

Я на английском не могу разговаривать

jessgt
() автор топика
Ответ на: комментарий от jessgt

Порядок линковки

А попробуй-ка применить такой патчик:

Fix_compile_issue.patch:

diff --git a/BBQScreenClient2.linux.pro b/BBQScreenClient2.linux.pro
index 225095f..ab034d0 100644
--- a/BBQScreenClient2.linux.pro
+++ b/BBQScreenClient2.linux.pro
@@ -26,11 +26,11 @@ include(BBQScreenClient2.pri)
 LIBS += -L/usr/local/lib
 
 # Set list of required FFmpeg libraries
-LIBS += -lavutil \
+LIBS += -lswresample \
     -lavcodec \
     -lavformat \
+    -lavutil \
     -lswscale \
-    -lswresample \
     -lz
 
 # Requied for some C99 defines

Как применить патч:

  1. Копируешь в буфер обмена текст выше.
  2. В директории проекта bbqscreen_client создаешь обычный текстовый файл с именем Fix_compile_issue.patch.
  3. Вставляешь в него содержимое буфера обмена, сохраняешь.
  4. В консоли переходишь в директорию проекта bbqscreen_client и выполняешь команду patch -Np1 < Fix_compile_issue.patch.
  5. Заново пересобираешь проект:
    make clean
    qmake BBQScreenClient2.linux.pro
    make

Если сложно разобраться с применением патча, измени вручную порядок линковки библиотек к проекту в файле BBQScreenClient2.linux.pro. Он должен быть таким:

LIBS += -lswresample \
    -lavcodec \
    -lavformat \
    -lavutil \
    -lswscale \
    -lz

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

Алсо, как всё-таки собрать этот проект правильно. Несколько советов

jessgt, позволь дать тебе несколько советов, раз уж ты решила собрать ffmpeg и эту программу из исходных кодов:

Во-первых, раз не удалось разрешить зависимости с помощью dev-пакетов из репозитория, то они тебе нафиг и не нужны, нечего засорять систему! Выполняем:

sudo apt-get purge libavcodec-dev libavformat-dev libavutil-dev libswscale-dev
sudo apt-get autoremove
Эти команды удалят уже ненужные пакеты для сборки.

Во-вторых, если ты устанавливала отдельно какие-то deb-пакеты отсюда, то тоже удали их вручную, дабы не было конфликтов.

В-третьих, после сборки ffmpeg для последующей установки его в систему ты выполнила что-то вроде sudo make install, а это весьма дурной тон, так как подобные действия сильно захламляют систему. Подробнее почитать об этом можешь вот тут: Хочется взять и расстрелять, или ликбез о том, почему не стоит использовать make install. Исправить такой недочет легко, если ты, конечно, сохранила сконфигурированные тобой исходники ffmpeg. Для этого достаточно выполнить sudo make uninstall в каталоге сорцов ffmpeg. Это очистит всю пакость, которую ты вкинула в свою системную директорию /usr/local.

В-четвертых, я заметил у тебя такой вот путь: /home/jessica/Документы/client_linux_x86_2.2.0/, что в нем такого страшного? Кириллица! Очень часто из-за нее можно огрести весьма трудноразрешимые проблемы, поэтому собирай проекты в отдельном каталоге, в названии которого только латинские символы, у себя в /home/jessica, например в каталоге /home/jessica/Projects или /home/jessica/Build.


Как я собирал этот проект.

  1. В пустой каталог /home/exl/Projects я разархивировал скачанные исходники ffmpeg-2.1.4:
    tar -xvjf ~/Downloads/ffmpeg-2.1.4.tar.bz2 -C ~/Projects
  2. В этот же каталог склонировал репозиторий bbqscreen_client на гитхабе:
    cd ~/Projects
    git clone git@github.com:xplodwild/bbqscreen_client.git
  3. Первым делом стоит собрать ffmpeg; и установить его не в системную директорию, а в директорию с собираемым проектом bbqscreen_client:
    cd ~/Projects/ffmpeg-2.1.4
    ./configure --disable-yasm --prefix=/home/exl/Projects/bbqscreen_client/ffmpeg_lib_linux
    make -j4 && make install
  4. Теперь применим небольшой патч, чтобы во-первых, все необходимые бибилиотеки + хэдеры были видны, а во-вторых, исправим порядок линковки:

    /home/exl/Projects/bbqscreen_client/fix-compile.patch:

    diff --git a/BBQScreenClient2.linux.pro b/BBQScreenClient2.linux.pro
    index 225095f..ac06175 100644
    --- a/BBQScreenClient2.linux.pro
    +++ b/BBQScreenClient2.linux.pro
    @@ -6,7 +6,8 @@ DESTDIR = ./Linux
     QT += core network widgets gui opengl multimedia
     CONFIG += debug
     DEFINES += QT_DLL QT_NETWORK_LIB QT_WIDGETS_LIB
    -INCLUDEPATH += ./GeneratedFiles \
    +INCLUDEPATH += ./ffmpeg_lib_linux/include \
    +    ./GeneratedFiles \
         . \
            ./QTFFmpegWrapper \
         ./GeneratedFiles/Debug \
    @@ -26,11 +27,11 @@ include(BBQScreenClient2.pri)
     LIBS += -L/usr/local/lib
     
     # Set list of required FFmpeg libraries
    -LIBS += -lavutil \
    +LIBS += -L./ffmpeg_lib_linux/lib -lswresample \
         -lavcodec \
         -lavformat \
    +    -lavutil \
         -lswscale \
    -    -lswresample \
         -lz
     
     # Requied for some C99 defines
    

    cd /home/exl/Projects/bbqscreen_client/
    patch -Np1 < Fix_compile_issue.patch
  5. Теперь можно перейти непосредственно к сборке проекта, я использую Qt 5.2.1, скачанный с официального сайта:
    cd /home/exl/Projects/bbqscreen_client/
    /opt/QtSDKs/Qt5.2.1/5.2.1/gcc_64/bin/qmake BBQScreenClient2.linux.pro 
    Project MESSAGE: You are running qmake on a generated .pro file. This may not work!
    RCC: Warning: No resources in 'mainwindow.qrc'.
    make -j4
    Итог, в каталоге /home/exl/Projects/bbqscreen_client/Linux/ - рабочая программа BBQScreenClient2
EXL ★★★★★
()
Ответ на: комментарий от batbko

Согласен, это было совсем излишним.

EXL ★★★★★
()

Спасибо большое, получилось.

Но теперь появилась другая проблема, когда подключаюсь к телефону у меня как будто поверху странное окошко, причем только на xubuntu (нетбуке), на ubuntu (компьютере) все нормально

http://i60.fastpic.ru/big/2014/0309/a2/428ba1177963f0d04b925e1c2d37d7a2.jpeg

в терминале показало только это (вдруг полезно)

./BBQScreenClient2
Connecting to  "192.168.42.129" 
QBackingStore::flush() called with non-exposed window, behavior is undefined
jessgt
() автор топика
Ответ на: комментарий от jessgt

Не за что. Рад, что у тебя все получилось.
Как я понял, на ubuntu (компьютере) программа работает нормально и без нареканий, а вот на xubuntu (нетбуке) - графические артефакты. Да, лог из терминала важен, я погуглил эту ошибку, вроде это какой-то баг Qt5, связанный с тем, что OpenGL-контекст (а qt5 рисует все через него), рисуется в отдельном потоке.

Метод решения вижу такой:
Собери эту программу не с помощью системных Qt5-пакетов, вытянутых из репозитория, а с помощью Qt 5.2.1, скачанного с официального сайта под твою архитектуру. Кажется, в твоем случае это будет

Qt 5.2.1 for Linux 32-bit (371 MB)

Установка пакета довольно проста:

wget http://download.qt-project.org/official_releases/qt/5.2/5.2.1/qt-opensource-linux-x86-5.2.1.run
chmod +x ~/Downloads/qt-opensource-linux-x86-5.2.1.run
sudo ~/Downloads/qt-opensource-linux-x86-5.2.1.run

И ставишь куда-нибудь в /opt/QtSDKs.

Все свои пакетики libqt5widgets5 libqt5gui5 libqt5core5 libqt5opengl5 libqt5multimedia5 можно оставить, но я бы их грохнул.

Затем собираешь софтину с помощью нового SDK:

cd /home/exl/Projects/bbqscreen_client/
make distclean
/opt/QtSDKs/Qt5.2.1/5.2.1/gcc_64/bin/qmake BBQScreenClient2.linux.pro 
Project MESSAGE: You are running qmake on a generated .pro file. This may not work!
RCC: Warning: No resources in 'mainwindow.qrc'.
make -j4

Если это не поможет - смотри на то, как работает OpenGL-стек у тебя на нетбуке. В частности, попробуй запустить утилиту glxgears, шестеренки должны резво крутиться. Проверь правильность установки драйверов и. т. д.

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

огромнейшее спасибо, все получилось сделать чтоб работало как надо

спасибо, спасибо, спасибо

jessgt
() автор топика
Ответ на: комментарий от jessgt

Ок. Не за что.
На всякий случай в репозитории на гитхабе открыл два issue, так что автор возможно пофиксит проблемы, возникающие при сборке этой программы.

EXL ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.