Для начала, ошибка QApplication: no such file or directory
означает, что ваш компилятор не смог найти этот заголовок.Это не связано с процессом связывания, как вы упомянули в вопросе.
Флаг -I
(прописные буквы i ) используется для указания каталога include (заголовки) (чтоВы должны сделать), в то время как флаг -L
используется для указания каталога библиотеки.Флаг -l
(строчная буква L) используется для связи вашего приложения с указанной библиотекой.
Но вы можете использовать Qt в своих интересах : Qt имеет систему сборки с именем qmake , который делает вещи проще.Например, когда я хочу скомпилировать main.cpp , я создаю файл main.pro .Допустим, в образовательных целях этот исходный код является простым проектом, в котором используются только QApplication
и QDeclarativeView
.Подходящим файлом .pro будет:
TEMPLATE += app
QT += gui declarative
SOURCES += main.cpp
Затем выполните qmake
внутри этого каталога, чтобы создать Makefile, который будет использоваться для компиляции вашего приложения, и, наконец, выполнить make
, чтобы выполнить работу.
В моей системе это make
выводит:
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_DECLARATIVE_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/opt/qt_47x/mkspecs/linux-g++ -I. -I/opt/qt_47x/include/QtCore -I/opt/qt_47x/include/QtGui -I/opt/qt_47x/include/QtDeclarative -I/opt/qt_47x/include -I/usr/X11R6/include -I. -o main.o main.cpp
g++ -Wl,-O1 -Wl,-rpath,/opt/qt_47x/lib -o main main.o -L/opt/qt_47x/lib -L/usr/X11R6/lib -lQtDeclarative -L/opt/qt_47x/lib -lQtScript -lQtSvg -L/usr/X11R6/lib -lQtSql -lQtXmlPatterns -lQtNetwork -lQtGui -lQtCore -lpthread
Примечание: я установил Qt в другой каталог -> /opt/qt_47x
Редактировать: Qt 5.x и более поздние версии
Добавить QT += widgets
в файл .pro и решить эту проблему.