Hallo,
ich habe bisher nur mit Visual Studio in C/C++ programmiert und wuerde
gerne mit Linux, speziell Xubuntu und Debian arbeiten. Da ich noch nie
mit Linux zutun hatte, dauerte das erste HelloWorld mit Texteditor
erstellt und dann per gcc ausgegeben sehr lange. Insbesondere dieses
Rechte Geschichte wir chmod a+x. Etc. Nun meine erste Frage: Mit welchen
Programmen werden die Lib-Dateien wie iostream geliefert? Bei Visual
Studio werden diese mit installiert. Sind diese bei Linux bereits
enthalten oder werden diese mit der Installation vom Compiler mit
installiert?
Meine zweite Frage. Muss man bei der Installation von Software für Linux
etwas beachten? Sehen immer wieder komplizierte Anleitungen, unter
Windows geschieht das mit einer einfachen Setup Datei.
Also so ähnlich wie Visual Studio ist kdevelop, welches bei Deiner
Distribution dabei sein sollte, das kommt auch aus der C++-Ecke.
Es gibt auch noch Eclipse, allerdings muss man da ggf. etwas basteln bis
da der Compiler usw drin sind.
Normalerweise nimmt man halt einen Editor (vim, Emacs, usw) und
Makefiles.
Was eventuell, besonders für GUI-Anwendungen für Dich interessant sein
könnte ist Lazarus. Das sollte auch bei der Distribution schon mit dabei
sein. Das ist ein moderner Klon von Delphi.
Andre R schrieb:> Meine zweite Frage. Muss man bei der Installation von Software für Linux> etwas beachten? Sehen immer wieder komplizierte Anleitungen, unter> Windows geschieht das mit einer einfachen Setup Datei.
ha. ha. ha.
Kannst du den Appstore auf deinem Handy bedienen? Ungefähr so läuft die
installation von Programmen, und auch Libs, auf Linux. Schon immer. Da
kann sich Windows verstecken. Nennt sich Paketmanager. Nach 20 Jahren
will MS das wohl nun auch in Windows 10 einführen und Apple hat vor
Kurzem auch erkannt, dass das cool ist...
Nimm übrigens Arch (Manjaro), das ist wesentlich besser als Ubuntu. Und
schau dir mal Qt an.
installieren der build-essentials. Dazu wiki in ubuntuusers etc. Als
Entwicklungsumgebung eignet sich Codeblocks(extrem einfach zu bedienen,
selbsterklärend), Eclipse(umfangreich, kann beliebig konfiguriert
werden, aber auch schwerer zu bedienen, dafür auch unglaublich flexibel;
wenn man irgendwann mal was professional machen will, trifft man mit
Sicherheit irgendwann auf Eclipse oder konsorten), oder QT-Creator für
GUIs mit QT, allerdings auch nicht gerade selbsterklärend. Alternativ:
Editor mit Makefiles, da kann ich geany empfehlen, da lassen sich auch
die makefiles recht einfach einbinden.
Mit den build-essentials kommen auch die ganzen Standardbibliotheken
> Mit welchen Programmen werden die Lib-Dateien wie iostream geliefert?
Die sind eigentlich alle dabei, jedefalls wenn du das Paket
"build-essential" installierst. Du musst halt auch die richtigen Header
Dateien angeben.
Und ein schöner, nicht so überladener, Editor ist auch Geany.
Und wenn du an den Rechten herumschrauben musst, ist wahrscheinlich
irgendetwas falsch gelaufen. Nur wenn du ein Programm systemweit
einrichten willst brauchst du das, und da reicht dann z.B. ein
sudo cp programmname /usr/local/bin/
/usr/local/bin ist einer der Ordner, in dem Programme installiert
werden, die nicht von der Paketverwaltung kommen.
Vielen Dank für die ausführliche Antworten. Das hat mir sehr geholfen.
Diese Makefile Geschichte irritiert mich. Ich werde mich an eclipse
versuchen. Jedoch benötige ich zur Installation einer Bibliothek namens
EPICS anscheinend makefiles, zumindest wenn ich der Beschreibung
folge...
Bevor du dich mit Eclipse und dem CDT herumplagst, schau dir vielleicht
doch mal den QTCreator an. Der ist deutlich leichtgewichtiger und
ähnlich leistungsfähig. Dank CMake Buildsystem kannste da auch Makefiles
relativ einfach erzeugen lassen, im Detail kann's aber dann schon auch
spannend werden. Aber immer noch besser als die GNU Autotools.
Wichtig für dich bei der Migration wird erstmal sein, die Toolchain
kennezulernen. Im MSVC hast du deine Toolchain schön von der UI
versteckt, unter Linux hilft Dir eine Kenntnis der Toolchain mitunter
schon ganz gut weiter.
Ne andere Sache wo Du aufpassen musst, sind die uneinheitlichen ABIs auf
Linux, da alles recht dezentral ist. Das ist für jemanden aus der
Windows-Welt ziemlich lästig, hat aber auch seine Vorteile. Am besten Du
setzt auf große und verbreitete Sachen wie QT oder Boost, dann bist Du
ein paar Sorgen los.
Makefiles selber sind auch nix schlimmes, die nutzt das VisualStudio
auch - dort isses halt NMake als Buildtool. Aber wie gesagt, das soll
nicht abschrecken, schau dir mal den QTcreator an, der nimmt Dir viel
Arbeit ab.
Ich habe mir jetzt als Distro "Linux Mint". Ist im Unterbau auch Ubuntu
bzw. Debian. Kann man echt empfehlen.
iostream gehört zur C++ Standard Library. Such mal im Inet. nach ein
Tutorial für C/C++ unter Linux. Da wird dir sicher einiges klarer. Wenn
Du keine Makefiles selber schreiben magst, was am Anfang etwas nervt,
dann kann man auch Monodevelop empfehlen.
Software unter Linuz zu installieren ist in der Regel einfach. Entweder
über "apt" oder Synaptic Package Manager und dergleichen. Wenn man
selber was kompilieren möchte, dann genügt im einfachsten Fall
configure+make. Wenn nicht, dann muss man halt schauen, was nicht passt.
db8fs schrieb:> Wichtig für dich bei der Migration wird erstmal sein, die Toolchain> kennenzulernen. Im MSVC hast du deine Toolchain schön von der UI> versteckt, unter Linux hilft Dir eine Kenntnis der Toolchain mitunter> schon ganz gut weiter.
Um das klarzustellen, du kannst natürlich deine Anwendung, so wie du es
von Windows und Visual Studio kennst, von einer IDE bauen lassen, z.B.
bei QtCreator, Code::Blocks, etc..
Unter Linux jedoch werden traditionell universelle IDE-unabhängige
Build-Systeme benutzt. Das rührt daher, dass bei der Linux/Unix
Philosophie jedes Programm genau eine spezielle Aufgabe übernimmt, und
Software auch als Quellcode veröffentlicht wird. Der Anwender benötigt
dann nur Kompiler und Bibliotheken um die Anwendung zu installieren
(also keine IDE).
Normalerweise werden Anwendungen vom Packetmanager aus dem Internet
(Repository) als Binärpakete installiert. Manchmal kommt es aber vor,
dass man z.B. die allerneueste Version eines Programmes benötigt, das
Repository aber eine ältere Version enthält (gibt verschiedene Gründe
dafür) und der Entwickler auf seiner Webseite nur eine Source-Version
anbietet, erst dann muss man mal selber kompilieren.
Das Kompilieren dürfte demnach auch einfacher sein als mit Visual
Studio, da zahlreiche Einstellungen zumindest für einfach C-Code
entfallen. Dennoch ist es eine Umstellung. In Visual Studio hatte ich
den Code und konnte auf Debuggen und Ausführen klicken. Mit Gcc und
Makefiles habe ich noch absolut keinen Überblick.
< ... und konnte auf Debuggen und Ausführen klicken. Mit Gcc und
Makefiles habe ich noch absolut keinen Überblick.
Das ist zwar etwas umständlicher als unter Windows, geht aber auch. Der
Debugger heißt "gdb". Wer den bedienen will fühlt sich als wenn er noch
mit CP/M arbeitet. Aber dafür gibt es dann Grafische Front-Ends wie
"ddd". Das ist zwar nicht ganz so komfortabel wie damals in der Borland
IDE, funktioniert aber halbwegs brauchbar. Voraussetzung ist aber, das
man seine Programme mit dem Compiler Switch "-g" übersetzt/linkt.
Andre R schrieb:> Das Kompilieren dürfte demnach auch einfacher sein als mit Visual> Studio, da zahlreiche Einstellungen zumindest für einfach C-Code> entfallen.
Welche zahlreichen Einstellungen? SDL, x86, x64, usw. usf.?
> Dennoch ist es eine Umstellung. In Visual Studio hatte ich> den Code und konnte auf Debuggen und Ausführen klicken. Mit Gcc und> Makefiles habe ich noch absolut keinen Überblick.
Dann probiere z.B. MonoDevelop, da geht das genauso wie unter VS.
MonoDevelop hätte u.U. den Vorteil, dass es dasselbe
XML-Projekt-/Solution-Dateiformat verwendet wie VS und diese auch
importieren kann (meistens...)
Meine Meinung:
Ubuntu ist für Anfänger sehr gut geeignet, wenn du das am laufen hast,
bleib dabei.
Zum installieren von Software reicht in 95% der Fälle ein
1
sudo apt-get install name_der_software
Dank Autovervollständigung muss man den namen auch nicht komplett
kennen.
Für den Beginn würde ich mich noch nicht auf größere Projekte stürzen
(GUI usw). Für kleinere Programme empfehle ich einen Editor ohne IDE und
händisches kompilieren von der Komandozeile oder Makefiles.
Ich finde es extrem wichtig zu verstehen, welche Befehle von den
build-tools (Makefile, CMake oder ganz versteckt in IDEs) aufgerufen
werden. Das erleichtert später die Fehlersuche bei größeren Projekten
enorm!
Theoretisch könnte ich mir gcc und diese Makefiles auch sparen. Würde
eclipse nicht ausreichen oder benötigt eclipse zur Ausführung von C Code
bzw Debuggen als Basis in Hintergrund gcc?
Andre R schrieb:> Theoretisch könnte ich mir gcc und diese Makefiles auch sparen.
?
> Würde eclipse nicht ausreichen oder benötigt eclipse zur Ausführung von C> Code
??
> bzw Debuggen als Basis in Hintergrund gcc?
Eclipse ist - wie auch Visual Studio - eine IDE, kein Compiler. Also
Projektverwaltung, Editor etc. in einem. Beide rufen im Hintergrund die
entsprechenden Programme auf. Natürlich brauchst du einen Compiler,
Linker etc. Das ist der Kuchen, die IDE nur der Zuckerguss.
Das hat nichts speziell mit Linux zu tun; du kannst auch unter Windows
einerseits "zu Fuß" auf der Kommandozeile mit Compiler, Linker und
Makefiles arbeiten, andererseits andere Tools/Compiler in VS (oder
andere IDEs) einbinden. Das Prinzip ist eigentlich immer gleich, ob bei
Eclipse, VS, KDevelop, Code::Blocks oder sonstwas.
Hallo Andre,
Andre R schrieb:> Theoretisch könnte ich mir gcc und diese Makefiles auch sparen.
Theoretisch ja. Praktisch ist es durchaus sinnvoll, zu verstehen, was
Deine IDE im Hintergrund eigentlich wirklich macht.
YMMV,
Karl