how to fix linker error in eclipse on linux
-
@micha_eleric said in how to fix linker error in eclipse on linux:
not an install link
I don't know what this means...
If you installed Qt5 properly there will be QMainWindow header file.
This thread is already 36 posts long. Maybe you should do what was suggested? Like setting proper lib folder?@jsulm said in how to fix linker error in eclipse on linux:
@micha_eleric said in how to fix linker error in eclipse on linux:
not an install link
I don't know what this means...
If you installed Qt5 properly there will be QMainWindow header file.
This thread is already 36 posts long. Maybe you should do what was suggested? Like setting proper lib folder?set proper lib folder is what i have been trying
-
@jsulm said in how to fix linker error in eclipse on linux:
@micha_eleric said in how to fix linker error in eclipse on linux:
not an install link
I don't know what this means...
If you installed Qt5 properly there will be QMainWindow header file.
This thread is already 36 posts long. Maybe you should do what was suggested? Like setting proper lib folder?set proper lib folder is what i have been trying
@micha_eleric said in how to fix linker error in eclipse on linux:
set proper lib folder is what i have been trying
But why are you still setting wrong folder?
I repeat it once more: /lib/x86_64-linux-gnu should be the correct one not /usr/include/qt4 /usr/include/qt4/QtWidgets... -
@micha_eleric said in how to fix linker error in eclipse on linux:
set proper lib folder is what i have been trying
But why are you still setting wrong folder?
I repeat it once more: /lib/x86_64-linux-gnu should be the correct one not /usr/include/qt4 /usr/include/qt4/QtWidgets...@jsulm said in how to fix linker error in eclipse on linux:
@micha_eleric said in how to fix linker error in eclipse on linux:
set proper lib folder is what i have been trying
But why are you still setting wrong folder?
I repeat it once more: /lib/x86_64-linux-gnu should be the correct one not /usr/include/qt4 /usr/include/qt4/QtWidgets...because it is the only dir that has .h files
-
g++ -L/usr/lib/x86_64-linux-gnu -o "GUI2" ./src/CGUI.o ./src/Main.o
/usr/bin/ld: ./src/CGUI.o: in function `CGUI::CGUI(QWidget*)':
/home/michaeleric/eclipse-workspace/GUI2/Debug/../src
/CGUI.cpp:10: undefined reference toQMainWindow::QMainWindow(QWidget*, QFlags<Qt::WindowType>)' /usr/bin/ld: /home/michaeleric/eclipse-workspace/GUI2/Debug/../src/CGUI.cpp:10: undefined reference to
vtable for CGUI' -
@jsulm said in how to fix linker error in eclipse on linux:
@micha_eleric said in how to fix linker error in eclipse on linux:
set proper lib folder is what i have been trying
But why are you still setting wrong folder?
I repeat it once more: /lib/x86_64-linux-gnu should be the correct one not /usr/include/qt4 /usr/include/qt4/QtWidgets...because it is the only dir that has .h files
@micha_eleric said in how to fix linker error in eclipse on linux:
because it is the only dir that has .h files
Are you joking?
We are talking about folder containing LIBRARIES, not headers!
This tells you clearly that it is about libraries:
"under Properties->C/C++ Build->Settings->Tool Settings->GCC C++ Linker->Libraries->Libraries search path"Could you please be so kind and set /lib/x86_64-linux-gnu there? Else I give up on this thread...
-
g++ -L/usr/lib/x86_64-linux-gnu -L/usr/lib/x86_64-linux-gnu/qt5 -L/usr/lib/qt5 -o "GUI2" ./src/CGUI.o ./src/Main.o
still gives same errors
-
g++ -L/usr/lib/x86_64-linux-gnu -L/usr -L/ -L/usr/lib -L/usr/lib/x86_64-linux-gnu/qt5 -L/usr/lib/qt5 -o "GUI2" ./src/CGUI.o ./src/Main.o
gives same errors
i keep wandering if i properly installed qt, keep rechecking sudo install qt, and keep coming back to sites i already went to.
-
g++ -L/usr/lib/x86_64-linux-gnu -L/usr -L/ -L/usr/lib -L/usr/lib/x86_64-linux-gnu/qt5 -L/usr/lib/qt5 -o "GUI2" ./src/CGUI.o ./src/Main.o
gives same errors
i keep wandering if i properly installed qt, keep rechecking sudo install qt, and keep coming back to sites i already went to.
@micha_eleric -L is not enough. You also have to tell the linker which libraries exactly you want to link.
This is done using -l parameter followed (without space) by the name of the library but without lib prefix and without .so extension.
Like:-lQt5Gui
-
@micha_eleric -L is not enough. You also have to tell the linker which libraries exactly you want to link.
This is done using -l parameter followed (without space) by the name of the library but without lib prefix and without .so extension.
Like:-lQt5Gui
@jsulm i cant find any qmainwindow, mainwindow, anything close to mainwindow in /usr/lib/x86_64-linux-gnu/
the only place anything close to mainwindow are .h files under qt4wandering if qt4 .h files is the issue
-
g++ -L/usr/lib/x86_64-linux-gnu -L/usr -L/ -L/usr/lib -L/usr/lib/x86_64-linux-gnu/qt5 -L/usr/lib/qt5 -o "GUI2" ./src/CGUI.o ./src/Main.o /usr/lib/x86_64-linux-gnu/libQtGui.so
/usr/bin/ld: ./src/CGUI.o: in functionCGUI::CGUI(QWidget*)': /home/michaeleric/eclipse-workspace/GUI2/Debug/../src/CGUI.cpp:10: undefined reference to
vtable for CGUI'
/usr/bin/ld: /home/michaeleric/eclipse-workspace/GUI2/Debug/../src/CGUI.cpp:10: undefined reference tovtable for CGUI' /usr/bin/ld: ./src/CGUI.o: in function
CGUI::~CGUI()':
/home/michaeleric/eclipse-workspace/GUI2/Debug/../src/CGUI.cpp:15: undefined reference tovtable for CGUI' /usr/bin/ld: /home/michaeleric/eclipse-workspace/GUI2/Debug/../src/CGUI.cpp:15: undefined reference to
vtable for CGUI' -
@jsulm i cant find any qmainwindow, mainwindow, anything close to mainwindow in /usr/lib/x86_64-linux-gnu/
the only place anything close to mainwindow are .h files under qt4wandering if qt4 .h files is the issue
@micha_eleric said in how to fix linker error in eclipse on linux:
i cant find any qmainwindow, mainwindow, anything close to mainwindow in /usr/lib/x86_64-linux-gnu/
Of course not. QMainWindow is part of widgets module as you can easilly see in the documentation: https://doc.qt.io/qt-5/qmainwindow.html (qmake: QT += widgets)
That means you should look for libQt5Widgets.so in /usr/lib/x86_64-linux-gnu.
And "surprisingly" it is there in your own list of libs: /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 -
@micha_eleric said in how to fix linker error in eclipse on linux:
i cant find any qmainwindow, mainwindow, anything close to mainwindow in /usr/lib/x86_64-linux-gnu/
Of course not. QMainWindow is part of widgets module as you can easilly see in the documentation: https://doc.qt.io/qt-5/qmainwindow.html (qmake: QT += widgets)
That means you should look for libQt5Widgets.so in /usr/lib/x86_64-linux-gnu.
And "surprisingly" it is there in your own list of libs: /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5@jsulm g++ -L/usr/lib/x86_64-linux-gnu -L/usr -L/ -L/usr/lib -L/usr/lib/x86_64-linux-gnu/qt5 -L/usr/lib/qt5 -o "GUI2" ./src/CGUI.o ./src/Main.o /usr/lib/x86_64-linux-gnu/libQtGui.so /usr/lib/x86_64-linux-gnu/libQt5Widgets.so
/usr/bin/ld: ./src/CGUI.o: in functionCGUI::CGUI(QWidget*)': /home/michaeleric/eclipse-workspace/GUI2/Debug/../src/CGUI.cpp:10: undefined reference to
vtable for CGUI'
/usr/bin/ld: /home/michaeleric/eclipse-workspace/GUI2/Debug/../src/CGUI.cpp:10: undefined reference tovtable for CGUI' /usr/bin/ld: ./src/CGUI.o: in function
CGUI::~CGUI()':
/home/michaeleric/eclipse-workspace/GUI2/Debug/../src/CGUI.cpp:15: undefined reference tovtable for CGUI' /usr/bin/ld: /home/michaeleric/eclipse-workspace/GUI2/Debug/../src/CGUI.cpp:15: undefined reference to
vtable for CGUI' -
@jsulm g++ -L/usr/lib/x86_64-linux-gnu -L/usr -L/ -L/usr/lib -L/usr/lib/x86_64-linux-gnu/qt5 -L/usr/lib/qt5 -o "GUI2" ./src/CGUI.o ./src/Main.o /usr/lib/x86_64-linux-gnu/libQtGui.so /usr/lib/x86_64-linux-gnu/libQt5Widgets.so
/usr/bin/ld: ./src/CGUI.o: in functionCGUI::CGUI(QWidget*)': /home/michaeleric/eclipse-workspace/GUI2/Debug/../src/CGUI.cpp:10: undefined reference to
vtable for CGUI'
/usr/bin/ld: /home/michaeleric/eclipse-workspace/GUI2/Debug/../src/CGUI.cpp:10: undefined reference tovtable for CGUI' /usr/bin/ld: ./src/CGUI.o: in function
CGUI::~CGUI()':
/home/michaeleric/eclipse-workspace/GUI2/Debug/../src/CGUI.cpp:15: undefined reference tovtable for CGUI' /usr/bin/ld: /home/michaeleric/eclipse-workspace/GUI2/Debug/../src/CGUI.cpp:15: undefined reference to
vtable for CGUI'@micha_eleric said in how to fix linker error in eclipse on linux:
/usr/bin/ld: ./src/CGUI.o: in function CGUI::CGUI(QWidget*)': /home/michaeleric/eclipse-workspace/GUI2/Debug/../src/CGUI.cpp:10: undefined reference tovtable for CGUI'
This is now another problem.
Classes which subclass QObject need moc tool (see https://doc.qt.io/qt-5/moc.html for more details). You can of course do that manually somehow.
But I would strongly recommend to use a proper build tool, either qmake or CMake. Both will call moc for your. -
@micha_eleric said in how to fix linker error in eclipse on linux:
/usr/bin/ld: ./src/CGUI.o: in function CGUI::CGUI(QWidget*)': /home/michaeleric/eclipse-workspace/GUI2/Debug/../src/CGUI.cpp:10: undefined reference tovtable for CGUI'
This is now another problem.
Classes which subclass QObject need moc tool (see https://doc.qt.io/qt-5/moc.html for more details). You can of course do that manually somehow.
But I would strongly recommend to use a proper build tool, either qmake or CMake. Both will call moc for your.@jsulm thank you
-
@micha_eleric said in how to fix linker error in eclipse on linux:
/usr/bin/ld: ./src/CGUI.o: in function CGUI::CGUI(QWidget*)': /home/michaeleric/eclipse-workspace/GUI2/Debug/../src/CGUI.cpp:10: undefined reference tovtable for CGUI'
This is now another problem.
Classes which subclass QObject need moc tool (see https://doc.qt.io/qt-5/moc.html for more details). You can of course do that manually somehow.
But I would strongly recommend to use a proper build tool, either qmake or CMake. Both will call moc for your.This is now another problem.
Classes which subclass QObject need moc tool (see https://doc.qt.io/qt-5/moc.html for more details). You can of course do that manually somehow.
But I would strongly recommend to use a proper build tool, either qmake or CMake. Both will call moc for your.and not part of the install
-
This is now another problem.
Classes which subclass QObject need moc tool (see https://doc.qt.io/qt-5/moc.html for more details). You can of course do that manually somehow.
But I would strongly recommend to use a proper build tool, either qmake or CMake. Both will call moc for your.and not part of the install
@micha_eleric said in how to fix linker error in eclipse on linux:
and not part of the install
Do you mean moc? If you properly installed Qt development packages then it should be there.
On my Ubuntu: /usr/bin/moc -
@micha_eleric said in how to fix linker error in eclipse on linux:
and not part of the install
Do you mean moc? If you properly installed Qt development packages then it should be there.
On my Ubuntu: /usr/bin/moc@jsulm using eclipse
-
using eclipse on linux
error, i am mostly sure is an eclipse issue, and not a programming issue.g++ -L/usr/include/qt4 -L/usr/include/qt4/QtSerialPort -L/usr/include/qt4/QtGui -o "GUI2" ./src/CGUI.o ./src/Main.o
/usr/bin/ld: ./src/CGUI.o: in functionCGUI::CGUI()': /home/michaeleric/eclipse-workspace/GUI2/Debug/../src/CGUI.cpp:10: undefined reference to
QMainWindow::QMainWindow(QWidget*, QFlagsQt::WindowType)'
/usr/bin/ld: /home/michaeleric/eclipse-workspace/GUI2/Debug/../src/CGUI.cpp:10: undefined reference tovtable for CGUI' /usr/bin/ld: /home/michaeleric/eclipse-workspace/GUI2/Debug/../src/CGUI.cpp:10: undefined reference to
vtable for CGUI'
/usr/bin/ld: ./src/CGUI.o: in functionCGUI::~CGUI()': /home/michaeleric/eclipse-workspace/GUI2/Debug/../src/CGUI.cpp:15: undefined reference to
vtable for CGUI'
/usr/bin/ld: /home/michaeleric/eclipse-workspace/GUI2/Debug/../src/CGUI.cpp:15: undefined reference tovtable for CGUI' /usr/bin/ld: /home/michaeleric/eclipse-workspace/GUI2/Debug/../src/CGUI.cpp:15: undefined reference to
QMainWindow::~QMainWindow()'
/usr/bin/ld: ./src/Main.o: in functionmain': /home/michaeleric/eclipse-workspace/GUI2/Debug/../src/Main.cpp:14: undefined reference to
QApplication::QApplication(int&, char**, int)'
/usr/bin/ld: /home/michaeleric/eclipse-workspace/GUI2/Debug/../src/Main.cpp:17: undefined reference toQApplication::exec()' /usr/bin/ld: /home/michaeleric/eclipse-workspace/GUI2/Debug/../src/Main.cpp:14: undefined reference to
QApplication::~QApplication()'
/usr/bin/ld: /home/michaeleric/eclipse-workspace/GUI2/Debug/../src/Main.cpp:14: undefined reference to `QApplication::~QApplication()'
collect2: error: ld returned 1 exit status
make: *** [makefile:47: GUI2] Error 1based on https://forum.qt.io/topic/101400/qt-with-eclipse-c/5 , i added QtCore and QtWidgets, even though there were no errors with #include<>. same errors from compile.
https://stackoverflow.com/questions/6478317/eclipse-undefined-reference says it is a linker error
under Properties->C/C++ Build->Settings->Tool Settings->GCC C++ Linker->command: g++
under Properties->C/C++ Build->Settings->Tool Settings->GCC C++ Linker->Libraries->Libraries (-l) [nothing]
under Properties->C/C++ Build->Settings->Tool Settings->GCC C++ Linker->Libraries->Libraries search path (-L) /usr/include/qt4 /usr/include/qt4/QtWidgets /usr/include/qt4/QtCore /usr/include/qt4/QtSerialPort /usr/include/qt4/QtGui
under Properties->C/C++ Build->Settings->Tool Settings->GCC C++ Linker->Miscellaneous->Linker flags [nothing]
under Properties->C/C++ Build->Settings->Tool Settings->GCC C++ Linker->Miscellaneous->Other options (-Xlinker [option]) [nothing]
under Properties->C/C++ Build->Settings->Tool Settings->GCC C++ Linker->Miscellaneous->Other objects [nothing]
under Properties->C/C++ Build->Settings->Tool Settings->GCC C++ Linker->Shared Library Settings [nothing][nothing][nothing][nothing]
what is suppose to be added, and where?
if:
under Properties->C/C++ Build->Settings->Tool Settings->GCC C++ Linker->Libraries->Libraries (-l) /usr/include/qt4/QtGui
error:
/usr/bin/ld: cannot find -l/usr/include/qt4/QtGuiif:
under Properties->C/C++ Build->Settings->Tool Settings->GCC C++ Linker->Miscellaneous->Other options (-Xlinker [option]) /usr/include/qt4/QtGui
error:
/usr/bin/ld: cannot find /usr/include/qt4/QtGui: file format not recognizedif:
under Properties->C/C++ Build->Settings->Tool Settings->GCC C++ Linker->Miscellaneous->Other objects /usr/include/qt4/QtGui
error:
/usr/bin/ld: cannot find /usr/include/qt4/QtGui: file format not recognizedif it is a virtual function that has to be defined, then what would it be, other than constructor/destructor?
answer:
deleting:
under Properties->C/C++ Build->Settings->Tool Settings->GCC C++ Linker->Libraries->Libraries search path (-L) /usr/include/qt4 /usr/include/qt4/QtWidgets /usr/include/qt4/QtCore /usr/include/qt4/QtSerialPort /usr/include/qt4/QtGui, did nothing, no new errors, nothing with previous errorsunder Properties->C/C++ Build->Settings->Tool Settings->GCC C++ Linker->Miscellaneous->Other objects /usr/lib/x86_64-linux-gnu/libQtGui.so
fixed errors, exposed new errors@micha_eleric said in how to fix linker error in eclipse on linux:
using eclipse on linux
error, i am mostly sure is an eclipse issue, and not a programming issue. -
@JonB for me, find /usr/lib -name'*Qt5 *', anr find /usr/lib -name *Qt5 * had same results. [note] no space between 5 and *
@micha_eleric said in how to fix linker error in eclipse on linux:
@JonB for me, find /usr/lib -name'*Qt5 *', anr find /usr/lib -name *Qt5 * had same results. [note] no space between 5 and *
Not if you did as I carefully stated and had any file with
Qt5
in its name in the directory where you were when you typed in thatfind
command, as I explained.....
@JonB said in how to fix linker error in eclipse on linux:P.S.
If anyone does not believe me: before running the command do atouch Qt5
in the directory you runfind /usr/lib -name '*Qt5*'
versusfind /usr/lib -name *Qt5*
from., and compare the results...Did you do that
touch
or not? -
@micha_eleric said in how to fix linker error in eclipse on linux:
@JonB for me, find /usr/lib -name'*Qt5 *', anr find /usr/lib -name *Qt5 * had same results. [note] no space between 5 and *
Not if you did as I carefully stated and had any file with
Qt5
in its name in the directory where you were when you typed in thatfind
command, as I explained.....
@JonB said in how to fix linker error in eclipse on linux:P.S.
If anyone does not believe me: before running the command do atouch Qt5
in the directory you runfind /usr/lib -name '*Qt5*'
versusfind /usr/lib -name *Qt5*
from., and compare the results...Did you do that
touch
or not?@JonB touch did something different, but not touch *Qt5 *, and touch '*Qt5 *'