Forum: PC-Programmierung C/C++ von Windows auf Ubuntu


von Andre R (Gast)


Lesenswert?

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.

von Christian B. (casandro)


Lesenswert?

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.

von Guest (Gast)


Lesenswert?

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.

von ffff (Gast)


Lesenswert?

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

von Manfred M. (bittbeisser)


Lesenswert?

> 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.

von Andre R (Gast)


Lesenswert?

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...

von db8fs (Gast)


Lesenswert?

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.

von mar IO (Gast)


Lesenswert?

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.

von TriHexagon (Gast)


Lesenswert?

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.

von Andre R (Gast)


Lesenswert?

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.

von Manfred M. (bittbeisser)


Lesenswert?

< ... 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.

von Arc N. (arc)


Lesenswert?

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...)

von Matthias H. (hallamen)


Lesenswert?

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!

von Andre R (Gast)


Lesenswert?

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?

von Karlsson vom Dach (Gast)


Lesenswert?

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.

von Karl Käfer (Gast)


Lesenswert?

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.