Linux Mint 18.1에서 LightScreen 컴파일하기

Linux Mint 18.1에서 LightScreen 컴파일하기

Linux Mint 18.1에서 Linux와 호환된다고 주장하는 애플리케이션을 컴파일하는 데 문제가 있습니다. 응용 프로그램은 Lightscreen이라고 합니다. 명령을 사용하는 것을 제외하고는 모든 것이 원활하게 진행됩니다 make.

지금까지 수행한 명령 프로세스는 다음과 같습니다.

이전 버전의 라이트스크린을 사용하지 않으면 다음과 같은 결과가 나와 다른 버전에서는 작동하지 않기 때문에 먼저 QT 5.7을 설치해야 했습니다.

Project ERROR: Unknown module(s) in QT: x11extras

그래서 최근 업데이트에서 지원되는 것으로 추정되는 QT 5.7을 설치했는데 결과는 다음과 같습니다.

nicholas@LinuxNick ~/bin/lightscreen $ /home/nicholas/.Qt/5.7/gcc_64/bin/qmake
Project MESSAGE: This project is using private headers and will therefore be tied to this specific Qt module build version.
Project MESSAGE: Running this project against other versions of the Qt modules may crash at any arbitrary point.
Project MESSAGE: This is not a bug, but a result of using Qt internals. You have been warned!
nicholas@LinuxNick ~/bin/lightscreen $ 

오류 메시지는 없고 일반적인 프로젝트 메시지만 있어서 모든 것이 괜찮을 거라고 생각하고 계속했습니다. make를 실행했는데 첫 번째 오류가 발생했습니다.

In file included from tools/screenshot.cpp:45:0:
tools/screenshot.cpp: In member function ‘void Screenshot::save()’:
tools/screenshot.cpp:250:34: error: expected unqualified-id before numeric constant
             result = Screenshot::Success;
                                  ^
tools/screenshot.cpp:260:79: error: expected unqualified-id before numeric constant
   result = (QFile::rename(mUnloadFilename, fileName)) ? Screenshot::Success : S
                                                                     ^
tools/screenshot.cpp:260:79: error: expected ‘:’ before numeric constant
tools/screenshot.cpp:262:34: error: expected unqualified-id before numeric constant
             result = Screenshot::Success;
                                  ^
Makefile:5959: recipe for target 'screenshot.o' failed
make: *** [screenshot.o] Error 1

내가 뭐 잘못 했어요? 저는 Linux에서 컴파일하는 것이 처음이고 많은 프로그램을 컴파일했지만 여전히 작업 방법과 컴파일 방법을 파악하지 못했습니다. 단계별 가이드는 도움이 될 수 있지만 반드시 그럴 필요는 없습니다. 특히 필요하지 않은 경우에는 더욱 그렇습니다.

미리 도와주시고 감사드립니다.

편집: 지금 다른 문제가 발생했습니다. 이것을 실행하면 make다음과 같은 결과가 출력됩니다.

g++ -c -pipe -O2 -std=gnu++11 -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DUGLOBALHOTKEY_NOEXPORT -DAPP_VERSION=\"2.5\" -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_MULTIMEDIA_LIB -DQT_X11EXTRAS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_SQL_LIB -DQT_CONCURRENT_LIB -DQT_CORE_LIB -I. -Itools/UGlobalHotkey -Itools/UGlobalHotkey -I../../.Qt/5.7/gcc_64/include -I../../.Qt/5.7/gcc_64/include/QtWidgets -I../../.Qt/5.7/gcc_64/include/QtMultimedia -I../../.Qt/5.7/gcc_64/include/QtGui/5.7.1 -I../../.Qt/5.7/gcc_64/include/QtGui/5.7.1/QtGui -I../../.Qt/5.7/gcc_64/include/QtX11Extras -I../../.Qt/5.7/gcc_64/include/QtGui -I../../.Qt/5.7/gcc_64/include/QtNetwork -I../../.Qt/5.7/gcc_64/include/QtSql -I../../.Qt/5.7/gcc_64/include/QtConcurrent -I../../.Qt/5.7/gcc_64/include/QtCore/5.7.1 -I../../.Qt/5.7/gcc_64/include/QtCore/5.7.1/QtCore -I../../.Qt/5.7/gcc_64/include/QtCore -I. -I. -I../../.Qt/5.7/gcc_64/mkspecs/linux-g++ -o os.o tools/os.cpp
tools/os.cpp: In function ‘QPair<QPixmap, QPoint> os::cursor()’:
tools/os.cpp:131:23: error: could not convert ‘QPoint(0, 0)’ from ‘QPoint’ to ‘QPair<QPixmap, QPoint>’
     return QPoint(0, 0);
                       ^
Makefile:5657: recipe for target 'os.o' failed
make: *** [os.o] Error 1

답변1

문제는 <X11/X.h>(Linux로 컴파일할 때만 포함됨)에서 발생합니다. 이는 다음 매크로를 정의합니다.

#define Success 0

이는 동일한 이름의 열거형 멤버를 방해합니다 Screenshot::Result::Success.

이 문제를 해결하려면 tools/screenshot.cpp를 열고 다음 줄을 찾으세요.

#ifdef Q_OS_LINUX
    #include <QX11Info>
    #include <X11/X.h>
    #include <X11/Xlib.h>
#endif

Xh를 포함시킨 후 #undef Success.

관련 정보