skip menu and go to main content

body start

CMPlayer

  0.5.4 버전 컴파일 시 에러 내용입니다. 7 ]

11.11.14-23:37:02

316659

Submitted by 카메즈

 

View372

 

install.txt에 나와있는대로 make -f Makefile.linux cmplayer 로 컴파일 해보았습니다.

1. vlc-plugin 폴더명
   Makefile.linux에는 cd src/vlc-plugin 으로 되어 있는데 실제 경로로 들어가 보니 cd src/vlc-plugins 로 's'가 더 붙어있었습니다.
  위의 폴더에서 s를 제거 후 컴파일 하고 있습니다.

2. src/cmplayer의 Makefile 권한

   다른 파일의 경우에는 압축을 해제한 사용자가 권한을 갖고 있었으나, 유독 위의 파일만 root 권한으로 되어있어서 root 권한으로 컴파일 중입니다.

현재 위의 문제는 클리어되고 아래의 문제때문에 qt4를 다시 설치해 가면서 컴파일 중입니다.

  app_x11.hpp:4:25: error: QtGui/QWidget No such file or directory

혹시 어떤 문제인지 감이 잡히신다면 알려주셔요~

추가=============================================================

이번엔 아래 게시물에 나와있는 방법대로 dpkg-buildpackage -b -rfakeroot를 이용해 빌드해 보니 위의 문제는 넘어가는데 아래의 문제가 발생하네요.

In file included from pref.hpp:9,
                 from main.cpp:3:
enums.hpp: In constructor ‘Enum::StaysOnTop::Map::Map()’:
enums.hpp:51: error: ‘class QList<Enum::StaysOnTop>’ has no member named ‘reserve’
enums.hpp: In constructor ‘Enum::SeekingStep::Map::Map()’:
enums.hpp:113: error: ‘class QList<Enum::SeekingStep>’ has no member named ‘reserve’
enums.hpp: In constructor ‘Enum::Overlay::Map::Map()’:
enums.hpp:175: error: ‘class QList<Enum::Overlay>’ has no member named ‘reserve’
enums.hpp: In constructor ‘Enum::GeneratePlaylist::Map::Map()’:
enums.hpp:237: error: ‘class QList<Enum::GeneratePlaylist>’ has no member named ‘reserve’
enums.hpp: In constructor ‘Enum::SubtitleAutoload::Map::Map()’:
enums.hpp:302: error: ‘class QList<Enum::SubtitleAutoload>’ has no member named ‘reserve’
enums.hpp: In constructor ‘Enum::SubtitleAutoselect::Map::Map()’:
enums.hpp:367: error: ‘class QList<Enum::SubtitleAutoselect>’ has no member named ‘reserve’
enums.hpp: In constructor ‘Enum::OsdAutoSize::Map::Map()’:
enums.hpp:429: error: ‘class QList<Enum::OsdAutoSize>’ has no member named ‘reserve’
enums.hpp: In constructor ‘Enum::ClickAction::Map::Map()’:
enums.hpp:494: error: ‘class QList<Enum::ClickAction>’ has no member named ‘reserve’
enums.hpp: In constructor ‘Enum::WheelAction::Map::Map()’:
enums.hpp:565: error: ‘class QList<Enum::WheelAction>’ has no member named ‘reserve’
enums.hpp: In constructor ‘Enum::KeyModifier::Map::Map()’:
enums.hpp:630: error: ‘class QList<Enum::KeyModifier>’ has no member named ‘reserve’
enums.hpp: In constructor ‘Enum::Position::Map::Map()’:
enums.hpp:710: error: ‘class QList<Enum::Position>’ has no member named ‘reserve’

dpkg-buildpackage -b -rfakeroot 를 이용해서 컴파일 할때는 Makefile.linux가 아닌 그냥 Makefile을 쓰시는 것 같은데 이 파일에는

src/vlc-plugin의 폴더명이 기존 폴더명인 src/vlc-plugins로 나와있네요~

어떻게 풀어나가야 되는지 알려주시면 감사하겠습니다.

Comments on this artfact

7 Comments

카메즈

Body was changed

11.11.14-23:48:11

xylosper

아.. 그부분 업데이트하는 것을 잊고 있었네요.
이제 그냥 'make'라고만 입력하여도 가능합니다.
그리고 적으신 에러는 Qt버전이 4.7보다 낮아서 그런 것으로 보입니다.
4.7이상의 Qt가 필요합니다.
소스 루트의 instruction 관련 파일들을 업데이트하는 것을 잊고 있었네요.
지적 감사합니다.

11.11.15-01:16:15

카메즈

git를 이용해 소스를 다시 받고, qt 4.7 버전 설치 후 위의 아래는 클리어 됐습니다만, 아래의 아래가 발생하네요. mainwindow.cpp 를 컴파일할 때 발생하는데요...

g++ -c -pipe -std=c++0x -O2 -Wall -W -D_REENTRANT -DCMPLAYER_VLC_PLUGINS_PATH=\"/usr/lib/cmplayer/vlc-plugins\" -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtNetwork -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4 -I../libchardet-1.0.1/src -I/usr/X11R6/include -Irelease -I. -o release/mainwindow.o mainwindow.cpp
mainwindow.cpp: In member function ‘void MainWindow::alignScreen(QAction*)’:
mainwindow.cpp:861: error: expected initializer before ‘:’ token
mainwindow.cpp:865: error: could not convert ‘((MainWindow*)this)->MainWindow::d->MainWindow::Data::video->VideoRenderer::setAlignment(key)’ to ‘bool’
mainwindow.cpp:866: error: expected primary-expression before ‘}’ token
mainwindow.cpp:866: error: expected ‘)’ before ‘}’ token
mainwindow.cpp:866: error: expected primary-expression before ‘}’ token
mainwindow.cpp:866: error: expected ‘;’ before ‘}’ token
make[3]: *** [release/mainwindow.o] 오류 1
make[3]: Leaving directory `/home/boo/workspace/cmplayer-0.5.4/src/cmplayer'
make[2]: *** [release] 오류 2
make[2]: Leaving directory `/home/boo/workspace/cmplayer-0.5.4/src/cmplayer'
make[1]: *** [cmplayer] 오류 2
make[1]: Leaving directory `/home/boo/workspace/cmplayer-0.5.4'
make: *** [build-stamp] 오류 2
dpkg-buildpackage: error: debian/rules build gave error exit status 2

11.11.15-03:29:22

xylosper

아마도 g++버전이 낮아서 C++11의 범위기반 for문을 지원하지 못하는 것 같습니다.
4.6버전 이상의 g++로 시도해보시기 바랍니다.

11.11.15-03:32:43

카메즈

mainwindow.cpp의 소스를 살펴보니 아래 부분에서 에러가 발생하는 것 같은데 어떻게 풀어가야되는지 부탁드리겠습니다.

859 void MainWindow::alignScreen(QAction */*action*/) {
860 int key = 0;
861 for (auto action : d->menu("video")("align").actions()) {
862 if (action->isChecked())
863 key |= action->data().toInt();
864 }
865 d->video->setAlignment(key);

ps. 제가 주로 임베디드 리눅스 쪽 c프로그래밍만 하는지라 cpp는 어떻게 디버깅해야되는지 난감하네요;; 귀찮게 자꾸 질문드려 죄송합니다ㅡㅡ

11.11.15-03:36:41

카메즈

아.. 답변을 벌써 남기셨네요~ 한번 해보고 결과 남겨드리겠습니다~

11.11.15-03:37:59

카메즈

말씀하신대로 컴파일러를 바꿔서 컴파일 완료했습니다. 도와주셔서 감사합니다. 프로그램 잘 쓸께요^^

11.11.15-05:23:11

xylosper

해결되셨다니 다행입니다. 또 문제생기면 말씀해주세요.

11.11.15-05:24:49