LibstdC ++: no DSO from the command line

I am having trouble creating the make file of the gtkmm file. I implemented a simple solution, however, I get the following error:

g ++ -Wall -std = C ++ 11 pkg-config gtkmm-3.0 --cflags -c main.cpp

cc main.o pkg-config gtkmm-3.0 --libs -o main

/ usr / bin / ld: main.o: undefined reference to the symbol '__gxx_personality_v0 @@ CXXABI_1.3'

/ usr / lib / x86_64-linux-gnu / libstdC ++. so.6: characters with errors added: DSO is not on the command line

collect2: error: ld returned 1 exit status

: recipe for target "main" failed

make: *** [main] Error 1

Makefile:

 # Compiler CXX = g++ CXXFLAGS = -Wall -std=c++11 `pkg-config gtkmm-3.0 --cflags` # gtkmm library flags LDLIBS = `pkg-config gtkmm-3.0 --libs` PROGRAM = main SRCS = $(wildcard *.cpp) OBJS = $(SRCS:.cpp=.o) DEPEND = .depend .PHONY: clean $(PROG): $(OBJS) $(CXX) $^ -o $@ $(LDLIBS) # Object file rules: .cpp.o: $(CXX) $(CXXFLAGS) -c $< # Dependencies .depend: rm -f ./.depend $(CXX) $(CXXFLAGS) -MM $(SRCS) > $(DEPEND) all: .depend $(PROGRAM) clean: rm -f $(OBJS) rm -f $(PROGRAM) rm -f $(DEPEND) -include $(DEPEND) 

main.cpp:

 #include <gtkmm/application.h> #include "MainWindow.hpp" int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.examples.base"); MainWindow window; // Show windows and return when closed return app->run(window); } 

MainWindow.hpp:

 #ifndef GUI_MAIN_WINDOW_H #define GUI_MAIN_WINDOW_H #include <gtkmm.h> class MainWindow: public Gtk::Window { public: MainWindow(); virtual ~MainWindow(); protected: Gtk::Frame frame; }; #endif // GUI_MAIN_WINDOW_H 

mainwindow.cpp:

 #include "MainWindow.hpp" MainWindow::MainWindow() { // Set window properties set_title("Main window"); set_size_request(300, 300); // Set window border width set_border_width(10); // Add frame add(frame); // Set frame label frame.set_label("Frame"); // Align the label at the right of the frame frame.set_label_align(Gtk::ALIGN_END, Gtk::ALIGN_START); // Set the style of the frame frame.set_shadow_type(Gtk::SHADOW_ETCHED_OUT); show_all_children(); } MainWindow::~MainWindow() { // Nothing to do here } 

What am I doing wrong?

+10
c ++ makefile gtkmm
source share
3 answers

I faced the same problem when building openCV libraries

 $ gcc DisplayImage.cpp 'pkg-config opencv --libs --cflags' -o DisplayImage /usr/bin/ld: /tmp/ccbyJ7Ms.o: undefined reference to symbol ' _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev@ @GLIBCXX_3.4.21' //usr/lib/i386-linux-gnu/libstdc++.so.6: error adding symbols: DSO missing from command line collect2: error: ld returned 1 exit status 

[SOLVE]

For gcc, try adding -lstdc++ to your command.

 $ gcc DisplayImage.cpp 'pkg-config opencv --libs --cflags' -o DisplayImage -lstdc++ 

For g ++, it will bind libstdc.so. 6 ++ automatically

 $ g++ DisplayImage.cpp 'pkg-config opencv --libs --cflags' -o DisplayImage 
+8
source share

I had the same problem, it was solved by adding -lstdC ++ on the command line.

+1
source share

I had a similar problem when compiling zeromq (zmq) into my project. Adding -lstdC ++ to the link bar in my makefile solved the problem.

0
source share

All Articles