how to fix linker error in eclipse on linux
-
@jsulm
I have edited my response to useQt5
. But the quoting is still necessary!? https://man7.org/linux/man-pages/man1/find.1.html :The filename matching is performed
with the use of the fnmatch(3) library function. Don't
forget to enclose the pattern in quotes in order to
protect it from expansion by the shell.@JonB said in how to fix linker error in eclipse on linux:
But the quoting is still necessary!?
For me both work on Ubuntu with GNU find (both have same amount of matches)
-
@JonB said in how to fix linker error in eclipse on linux:
But the quoting is still necessary!?
For me both work on Ubuntu with GNU find (both have same amount of matches)
@jsulm
Sorry I cannot leave this statement as-is! As we discussed privately, your unquoted behaviour of*Qt*
will generate totally different results depending on whether the current directory does or does not contain any filenames matching*Qt*
. Which is not what is desired for this search. ALWAYS quote wildcards (*
,?
) you are passing to a command likefind
if you expect it to work correctly robustly.... :)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... -
@jsulm
Sorry I cannot leave this statement as-is! As we discussed privately, your unquoted behaviour of*Qt*
will generate totally different results depending on whether the current directory does or does not contain any filenames matching*Qt*
. Which is not what is desired for this search. ALWAYS quote wildcards (*
,?
) you are passing to a command likefind
if you expect it to work correctly robustly.... :)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...@JonB for me, find /usr/lib -name'*Qt5 *', anr find /usr/lib -name *Qt5 * had same results. [note] no space between 5 and *
-
under Properties->C/C++ Build->Settings->Tool Settings->GCC C++ Linker->Libraries->Libraries (-l) /usr/lib/x86_64-linux-gnu
/usr/bin/ld: cannot find -l/usr/lib/x86_64-linux-gnu
under Properties->C/C++ Build->Settings->Tool Settings->GCC C++ Linker->Libraries->Libraries (-l) /usr/lib/x86_64-linux-gnu/qt5
/usr/bin/ld: cannot find -l/usr/lib/x86_64-linux-gnu/qt5both have libraries, but no clue if i have to add a specific file, or just the dir it is in
under Properties->C/C++ Build->Settings->Tool Settings->GCC C++ Linker->Libraries->Libraries (-l) /usr/lib/x86_64-linux-gnu/libQtCore
/usr/bin/ld: cannot find -l/usr/lib/x86_64-linux-gnu/libQtCore
under Properties->C/C++ Build->Settings->Tool Settings->GCC C++ Linker->Libraries->Libraries (-l) /usr/lib/x86_64-linux-gnu/libQtCore.so
/usr/bin/ld: cannot find -l/usr/lib/x86_64-linux-gnu/libQtCore.soit can not find a library, so i have to be doing something wrong
-
michaeleric@michaeleric-C7B250-CB-ML:~$ sudo find / -name '*MainWindow *'
[sudo] password for michaeleric:
/home/michaeleric/eclipse-workspace/GUI/CUi_MainWindow.h
find: ‘/run/user/1000/doc’: Permission denied
/usr/share/doc/HTML/ca/spectacle/MainWindow.png
/usr/share/doc/HTML/uk/spectacle/MainWindow.png
/usr/share/doc/HTML/en/spectacle/MainWindow.png
/usr/include/qt4/Qt3Support/Q3MainWindow
/usr/include/qt4/QtGui/QMainWindow
/usr/include/x86_64-linux-gnu/qt5/QtWidgets/QMainWindow
michaeleric@michaeleric-C7B250-CB-ML:~$there are no .h files for QMainWindow under Qt5 anywhere, thus why i was using Qt4, and thought Qt4 was installed.
error is about undefined reference to `QMainWindow:
i am looking around for a needle in a haystack, but dont know what the needle looks like, nor which haystack -
under Properties->C/C++ Build->Settings->Tool Settings->GCC C++ Linker->Libraries->Libraries (-l) /usr/lib/x86_64-linux-gnu
/usr/bin/ld: cannot find -l/usr/lib/x86_64-linux-gnu
under Properties->C/C++ Build->Settings->Tool Settings->GCC C++ Linker->Libraries->Libraries (-l) /usr/lib/x86_64-linux-gnu/qt5
/usr/bin/ld: cannot find -l/usr/lib/x86_64-linux-gnu/qt5both have libraries, but no clue if i have to add a specific file, or just the dir it is in
under Properties->C/C++ Build->Settings->Tool Settings->GCC C++ Linker->Libraries->Libraries (-l) /usr/lib/x86_64-linux-gnu/libQtCore
/usr/bin/ld: cannot find -l/usr/lib/x86_64-linux-gnu/libQtCore
under Properties->C/C++ Build->Settings->Tool Settings->GCC C++ Linker->Libraries->Libraries (-l) /usr/lib/x86_64-linux-gnu/libQtCore.so
/usr/bin/ld: cannot find -l/usr/lib/x86_64-linux-gnu/libQtCore.soit can not find a library, so i have to be doing something wrong
@micha_eleric said in how to fix linker error in eclipse on linux:
it can not find a library
Please post the error message.
"there are no .h files for QMainWindow under Qt5 anywhere" - of course there is if you installed qtwidgets module, see https://doc.qt.io/qt-5/qmainwindow.html
I'm wondering: why don't you use a proper build system like qmake or CMake instead hacking around with manual settings?
-
@micha_eleric said in how to fix linker error in eclipse on linux:
it can not find a library
Please post the error message.
"there are no .h files for QMainWindow under Qt5 anywhere" - of course there is if you installed qtwidgets module, see https://doc.qt.io/qt-5/qmainwindow.html
I'm wondering: why don't you use a proper build system like qmake or CMake instead hacking around with manual settings?
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 function CGUI::CGUI()': /home/michaeleric/eclipse-workspace/GUI2/Debug/../src/CGUI.cpp:10: undefined reference toQMainWindow::QMainWindow(QWidget*, QFlagsQt::WindowType)'
/usr/bin/ld: /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' /usr/bin/ld: /home/michaeleric/eclipse-workspace/GUI2/Debug/../src/CGUI.cpp:15: undefined reference toQMainWindow::~QMainWindow()'
/usr/bin/ld: ./src/Main.o: in function main': /home/michaeleric/eclipse-workspace/GUI2/Debug/../src/Main.cpp:14: undefined reference toQApplication::QApplication(int&, char**, int)'
/usr/bin/ld: /home/michaeleric/eclipse-workspace/GUI2/Debug/../src/Main.cpp:17: undefined reference to QApplication::exec()' /usr/bin/ld: /home/michaeleric/eclipse-workspace/GUI2/Debug/../src/Main.cpp:14: undefined reference toQApplication::~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?
-
@micha_eleric said in how to fix linker error in eclipse on linux:
it can not find a library
Please post the error message.
"there are no .h files for QMainWindow under Qt5 anywhere" - of course there is if you installed qtwidgets module, see https://doc.qt.io/qt-5/qmainwindow.html
I'm wondering: why don't you use a proper build system like qmake or CMake instead hacking around with manual settings?
@jsulm only "hacking" i am doing, is trying to find the path to the lib
-
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 function CGUI::CGUI()': /home/michaeleric/eclipse-workspace/GUI2/Debug/../src/CGUI.cpp:10: undefined reference toQMainWindow::QMainWindow(QWidget*, QFlagsQt::WindowType)'
/usr/bin/ld: /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' /usr/bin/ld: /home/michaeleric/eclipse-workspace/GUI2/Debug/../src/CGUI.cpp:15: undefined reference toQMainWindow::~QMainWindow()'
/usr/bin/ld: ./src/Main.o: in function main': /home/michaeleric/eclipse-workspace/GUI2/Debug/../src/Main.cpp:14: undefined reference toQApplication::QApplication(int&, char**, int)'
/usr/bin/ld: /home/michaeleric/eclipse-workspace/GUI2/Debug/../src/Main.cpp:17: undefined reference to QApplication::exec()' /usr/bin/ld: /home/michaeleric/eclipse-workspace/GUI2/Debug/../src/Main.cpp:14: undefined reference toQApplication::~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?
@micha_eleric said in how to fix linker error in eclipse on linux:
under Properties->C/C++ Build->Settings->Tool Settings->GCC C++ Linker->Libraries->Libraries search path (-L) /usr/include/qt4 /usr/include/qt4/QtWidgets
You are again adding include folder as library folder, why?! I already told you before that you need to set folder containing the libraries and we even figured out what it is (/lib/x86_64-linux-gnu). So, please set proper library folder...
-
@micha_eleric said in how to fix linker error in eclipse on linux:
it can not find a library
Please post the error message.
"there are no .h files for QMainWindow under Qt5 anywhere" - of course there is if you installed qtwidgets module, see https://doc.qt.io/qt-5/qmainwindow.html
I'm wondering: why don't you use a proper build system like qmake or CMake instead hacking around with manual settings?
"there are no .h files for QMainWindow under Qt5 anywhere" - of course there is if you installed qtwidgets module, see https://doc.qt.io/qt-5/qmainwindow.html
not an install link
-
"there are no .h files for QMainWindow under Qt5 anywhere" - of course there is if you installed qtwidgets module, see https://doc.qt.io/qt-5/qmainwindow.html
not an install link
@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? -
@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