Frage Wie verwende ich die GTK + Entwicklungsbibliotheken in Ubuntu?


Ich habe etwa anderthalb Jahre auf Windows programmiert und ich habe mich gerade daran gewöhnt, wie die Dinge auf dieser Plattform funktionieren, aber jetzt interessiert mich die Entwicklung von Linux und ich habe es schwer gehabt Gewöhnung an den Workflow, fehlende IDE und Kompilierung der Befehlszeile mit GCC. Ich benutze übrigens Xubuntu 13.10 64bit.

Um das Wasser zu testen, habe ich getan, was viele Leute machen und schrieb ein schnelles C ++ "Hallo Welt" -Programm.

#include <iostream>

int main()
{
    std::cout << "Hello!\n";
    return 0;
}

Meine erste Frage ist; Dieses Programm scheint einen Kompilierungsfehler zu bekommen, wenn ich es mit GCC kompiliere, aber es kompiliert, wenn ich den G ++ Compiler verwende:

gcc hello.cpp -o hello
/tmp/ccbmUmzf.o: In function `main':
hello.cpp:(.text+0xa): undefined reference to `std::cout'
hello.cpp:(.text+0xf): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/tmp/ccbmUmzf.o: In function `__static_initialization_and_destruction_0(int, int)':
hello.cpp:(.text+0x3d): undefined reference to `std::ios_base::Init::Init()'
hello.cpp:(.text+0x4c): undefined reference to `std::ios_base::Init::~Init()'
collect2: error: ld returned 1 exit status

Was passiert hier, ist GCC nicht erkennen, dass mein Code C ++ oder etwas ist?

Mein zweites Problem ist der Versuch, Bibliotheken zu verwenden: Ich hatte den Eindruck, dass die GTK + 3.0-Entwicklungsbibliotheken in (X) ubuntu enthalten sind, aber wenn ich versuche, dem einfachen Tutorial zu folgen HierIch erhalte den folgenden Fehler von G ++:

g++ hello.cpp -o hello
hello.cpp:1:21: fatal error: gtk/gtk.h: No such file or directory
 #include <gtk/gtk.h>
                     ^
compilation terminated.

Also habe ich das so interpretiert, dass die Bibliotheken für GTK + 3.0 nicht installiert sind. Also habe ich apt-get überprüft, und ich habe wirklich nichts gesehen, was so aussah, wie ich es brauchte. Muss ich GTK bauen? +3.0 von der Quelle, oder gibt es irgendwo PPA, die ich brauche ??

Diese Probleme sind für mich wirklich frustrierend. Ich weiß, dass viele Leute auf den GNU / Linux-Entwicklungsworkflow schwören, aber als jemand, der es gewohnt ist, in Visual Studio zu arbeiten, finde ich den Prozess etwas undurchsichtig und nicht intuitiv. Im Moment verwende ich Mousepad auf Xubuntu, um meinen Code zu bearbeiten, und obwohl er eine farbkodierte Syntax hat, scheint er darüber hinaus wenig zu tun. Ich weiß, dass ich irgendwann mit mehreren Dateien arbeiten und Makefiles erstellen muss, und zu diesem Zeitpunkt fürchte ich es!

Was auch immer Sie einem Anfänger-Programmierer und Linux / GNU-Noob alles geben können, ist sehr willkommen!


4
2017-12-06 04:50


Ursprung




Antworten:


Rat

Vor allem müssen Sie sich mit keiner IDE zufrieden geben. Installieren Sie Eclipse, es ist im Ubuntu Software Center verfügbar. Sie möchten auch CDT für Eclipse installieren, das Ihnen C / C ++ - Unterstützung bietet. Zweitens würde ich Ihnen sehr empfehlen, sich auf C ++ und Qt statt auf C und GTK zu konzentrieren. Qt ist ein großartiges plattformübergreifendes Framework, das C ++ und QML (eine JavaScript-ähnliche Sprache für UI) verwendet, und Ubuntu bewegt sich mehr und mehr dazu, Qt für ihre zukünftige Desktop- und Mobile-Entwicklung zu verwenden. Mit diesen Tools können Sie nicht nur schöne Anwendungen für Ubuntu Desktop erstellen, sondern auch für Android, Windows, Mac, BlackBerry und andere Betriebssysteme. Eine ausgezeichnete Qt-spezifische IDE ist QtCreator, die auch im Ubuntu Software Center verfügbar ist. Sie sollten es in einigen Qt-Tutorials ausprobieren.

Antworten

Um Ihre Frage direkt zu beantworten, obwohl Sie das, was ich oben beschrieben habe, dringend empfehlen, benötigen Sie wahrscheinlich die -dev-Versionen der Bibliotheken, die Sie verwenden. Für GTK 3 müssen Sie wahrscheinlich Folgendes tun:

sudo apt-get install libgtk-3-dev

Das sollte dir alle GTK 3 Header bringen.


4
2017-12-06 05:06



Ich gebe zu, ich kenne Qt, und ich habe die Entscheidung getroffen, GTK + etwas willkürlich auszuprobieren! Meine Argumentation war, dass ich als Xubuntu-Benutzer dachte, GTK könnte bereits installiert worden sein, weil es eine Abhängigkeit von XFCE ist (sofern ich mich nicht irre). Auch wenn GTK eine C-Bibliothek ist, funktioniert es nicht auch mit C ++ - Programmen? Ich will nicht, dass dies ein GTK gegen Qt Krieg wird, ich bin mir sicher, dass beide großartig sind, aber an diesem Punkt versuche ich nur einen auszuwählen und es funktioniert! - Auch der Eclipse-Vorschlag ist sicherlich etwas zu bedenken ..:] - MrKatSwordfish
Schau dir meinen Schnitt an. GTK ist eine Abhängigkeit, aber damit Apps funktionieren, wird nur der Binärteil benötigt. Was Sie kompilieren müssen, sind die Header, die in einem separaten Paket kommen - normalerweise der Bibliotheksname mit -dev am Ende. Ich hatte das Gefühl, dass Sie die Wahl ziemlich willkürlich aus Ihrer Frage getroffen haben, weshalb ich mir erlaubt habe, Ihnen eine Richtung zu geben. Sie können GTK mit C ++ verwenden, aber Sie müssen eine andere Bibliothek verwenden, wenn Sie nicht mit vielen unschönen C in C ++ umgehen wollen. Ich denke sein GTKmm. Das heißt, Qt ist viel portabler, ist in C ++ geschrieben und hat eine großartige Sprache für UIs. - Nicolay Doytchev
Ich würde sagen - versuchen Sie ein paar einfache UI-Sachen in beiden und entscheiden Sie sich für die mögliche Wiederverwendung von Code, die Sie mit beiden Plattformen plattformübergreifend durchführen können. Versuchen Sie unbedingt QtCreator. - Nicolay Doytchev
Die Installation von libgtk-3-dev hat wie ein Zauber funktioniert, danke! Natürlich wäre es so einfach; die Laufzeitbibliotheken waren da, aber nicht die Header, ich sehe. Ich finde es immer noch schwer zu finden, was ich brauche (und was ich bereits installiert habe) mit APT, aber das ist eine Frage für ein anderes Mal .. Ich habe eine Menge toller Dinge über Qt gelesen, und ich werde es definitiv auch versuchen ! Danke für die einfache, effektive Antwort UND die ehrliche Beratung / Meinung, lightrush! - MrKatSwordfish
Außerdem hättest du keine Ahnung, warum ich dieses Problem mit GCC vs G ++ am Anfang meiner Frage hatte, oder? Ich vermute, dass es etwas damit zu tun hat, dass die C ++ - Standardbibliothek nicht korrekt in GCC integriert ist, aber ich bin mir nicht sicher .. Irgendwelche Ideen? - MrKatSwordfish