Umstieg von Windows auf Linux [geschlossen]

57

Ich muss diese 2 Fakten in Einklang bringen:

  1. Ich fühle mich nicht wohl, wenn ich unter Linux arbeite.
  2. Ich muss Software für Linux entwickeln.

Einige Hintergrundinformationen: Ich habe über 10 Jahre Programmiererfahrung unter Windows (fast ausschließlich C / C ++, aber auch .NET). Ich war ungefähr 3 Jahre lang ein Benutzer von FreeBSD zu Hause (dann musste ich zurück zu Windows), und ich hatte noch nie viel Glück mit Linux. Und jetzt muss ich Software für Linux entwickeln. Ich brauche einen Plan.

Unter Windows müssen Sie lediglich eine Programmiersprache, eine API, mit der Sie programmieren, sowie Ihre IDE (VisualStudio) und einige grundlegende Tools zur Fehlerbehebung (Depends, ProcessExplorer, DebugView, WinDbg) kennen. Alles andere kommt natürlich.

Unter Linux ist das eine ganz andere Geschichte. Wie zum Teufel würde ich wissen, welche DLL (sorry, Shared Object) geladen würde, wenn ich vom Firefox-Plugin darauf verlinke? Was ist das Linux-Äquivalent zum Einfügen von __asm ​​int 3 / DebugBreak () in den Quellcode und zum Ausführen des Programms und zum anschließenden Aufrufen eines Debuggers durch das Betriebssystem? Warum verwenden die Höllen-Release-Builds etwas, das als AppLoader bezeichnet wird, während Debug-Builds irgendwie anders funktionieren? Das Schlimmste von allem: Wie wird eine Linux-Entwicklungsumgebung bereitgestellt?

Was würden Sie empfehlen, wenn man bedenkt, dass Hass normalerweise damit verbunden ist, nicht genug zu wissen? Ich bin in Ordnung mit Emacs und GCC. Ich muss mich als Linux-Administrator / -Nutzer ausbilden und die richtigen Tools zur Fehlerbehebung lernen (strace ist cool, übrigens), die denen entsprechen, die ich oben erwähnt habe.

Muss ich Linux von Grund auf neu installieren? Oder muss ich nur ein paar Bücher lesen (ich habe "UNIX Programming Environment" von Kernighan und "Advanced Programming ..." von Stevens gelesen, aber ich muss etwas Praktischeres lernen)? Oder muss ich eine Linux-Distribution auf meinem Heimcomputer haben?

rincewind
quelle
73
Ich fühle mich genauso mit Windows
15
Überlegt, einen anderen Job zu finden, mit dem Sie sich wohler fühlen?
3
On Unices manist dein Freund. Ich würde man nmund man ldals Ausgangspunkt.
Dietbuddha
1
Windows starten;)
Jigar Joshi
1
"Alles andere kommt natürlich"? Natürlich ist es selbstverständlich, dass Sie es seit 10 Jahren tun. Linux ist nicht schlechter, es ist anders . Und jetzt, da Sie 10 Jahre älter sind, lernt Ihr Gehirn nicht mehr so ​​einfach wie früher, und all die Dinge, die anders sind, müssen Sie verlernen. Wenn Sie sich mit "Linux sucks" dem Ganzen nähern, wird Ihr Leben miserabel.
JesperE

Antworten:

62

Möglicherweise finden Sie den Artikel Dynamic Linking unter Linux und Windows interessant, in dem erläutert wird, wie jedes Betriebssystem Dynamic Linking ausführt. Der Artikel Suchpfade für gemeinsam genutzte Bibliotheken erläutert, wie die Bibliotheken gefunden werden. Auch statische, gemeinsam genutzte dynamische und ladbare Linux-Bibliotheken sind sehr gut. Eine nette Sache an Linux-Bibliotheken ist, dass sie eine bessere Unterstützung für die Versionierung haben und mehrere Versionen einer Bibliothek haben als Windows (AFAIK, ich mache kein Windows). Siehe hierzu Versionierung der Bibliotheksschnittstelle in Solaris und Linux . Diese Artikel sollten Sie wirklich mit Bibliotheken decken.

Die GDB ist sehr mächtig, eine gute Einführung ist wahrscheinlich das gdb Tutorial von RMS . Möglicherweise möchten Sie sich über bedingte Haltepunkte informieren. Entsprechende Informationen finden Sie in__asm(int 3) der Frage Festlegen von Haltepunkten in C- oder C ++ - Code programmgesteuert für gdb unter Linux .

Das Buch Advanced Unix Programming von Marc Rochkind ist meiner Meinung nach ein Muss. Hat viele Beispiele und deckt alle POSIX / SUS-Themen sehr gut erklärt ab. Es ist das beste Buch zu diesem Thema, das ich bisher gelesen habe.

Aber um dir das Leben zu erleichtern, empfehle ich, eine High-Level-API zu verwenden, die Dinge wie Qt für dich abstrahiert. Erleichtert das plattformübergreifende Schreiben erheblich.

Wenn Sie Linux von Grund auf neu erstellen, können Sie sich ein Bild davon machen, wie ein Linux-System aufgebaut ist, aber ich denke, es verbessert Ihr Wissen darüber aus Entwicklersicht nicht wesentlich. Es macht Sie jedoch mit Linux wohler, da Sie lernen, welche Teile in einer Linux-Umgebung vorhanden sind (und teilweise auch warum ). Ein Linux wird für Sie keine große Blackbox, nachdem Sie Linux From Scratch durchgearbeitet haben.

DarkDust
quelle
Sicher, auf 32-Bit-Systemen wird dieser Interrupt in den Debugger eingebrochen, wenn der Prozess bereits debuggt wird . Das ist es, wenn ich danach frage. Windows ermöglicht das Anhängen eines Debuggers, nachdem der Trap aufgetreten ist. In einigen Fällen ist dies äußerst praktisch. Und danke für die Links!
Rincewind
6
Gute Antwort! Beachten Sie, dass RMS für das GDB-Lernprogramm "Ryan M. Schmidt" und nicht "Richard M. Stallman" ist. (Ein wichtiger Hinweis, da Stallman der ursprüngliche Autor von GDB war)
entropo
In Windows wurde das Laden von Side-by-Side- Bibliotheken ( msdn.microsoft.com/en-us/library/ms229072(v=vs.80).aspx ) seit etwa 12 Jahren unterstützt. In Bezug auf die Versionierung liegen Sie also falsch.
Claus Jørgensen
16

Wenn Sie möchten strace, vergessen Sie nicht ltrace: das Äquivalent für Bibliotheksaufrufe.
Außerdem empfehle ich Linux From Scratch . Es ist eine gute Übung, um die Kernelemente des Betriebssystems herauszufinden und wie sie zusammenpassen.
Für eine moderne, vollständige Referenzbehandlung für die Systemprogrammierung würde ich empfehlen, die Linux-Programmierschnittstelle zu verwenden .

Entropo
quelle
12

Der Mac OS X ist wie ein Mercedes. es ist das schönste und sauberste, aber es kostet viel. Windows ist wie ein Toyota; es wird dich hin und zurück bringen.

Linux ist wie ein Hot Rod; Es ist für die Menschen zu graben und auseinander zu nehmen und wieder zusammenzusetzen. Linux ist nichts für jemanden, der nur den Computer benutzen möchte. Es ist für Leute, die Computer lieben. Leute, die Computer nicht lieben, sollten sich davon fernhalten.

Die Dinge, die Sie in Windows gelernt haben, lassen sich nicht sehr gut übersetzen, nein. Aber du siehst die Einbauten und siehst zu, wie der Motor läuft.

Versuchen Sie, Linux als neues Spielzeug zu nehmen, mit dem Sie spielen und darin kriechen können, um zu sehen, was los ist. Was unter Windows einfach ist, ist unter Linux schwieriger. Dinge, die unter Windows unmöglich sind, sind unter Linux möglich.

Wenn Sie Computer lieben, können Sie Linux lieben. Wenn Sie Computer nicht lieben, warum programmieren Sie überhaupt?

Andy Canfield
quelle
13
+1 für " Dinge, die unter Windows einfach sind, sind unter Linux schwieriger; Dinge, die unter Windows unmöglich sind, sind unter Linux möglich ". Ich würde hinzufügen " Während Windows vorverdautes Essen in den Mund schiebt, haben Sie unter Linux die Möglichkeit zu kochen und die Belohnung dafür ist, dass Sie essen können, was Sie möchten " ... Natürlich, ob es essbar ist oder nicht hängt sehr davon ab, wie gut Sie als Koch sind ...
Alain Pannetier
14
@Andy: "Windows ist wie ein Toyota" . Toyota hat eine viel bessere Qualität als Windows.
Setzen Sie Monica am
4
@ SK-Logik, genau. Beachten Sie bitte Folgendes, ohne sich erneut auf einen religiösen Krieg einzulassen. Aus rein strategischen und finanziellen Gründen richtet sich die MS an ein möglichst großes Publikum. Technische Dinge, die Computer-bewusste Benutzer gerne kontrollieren würden, sind unsichtbar, damit die Joneses nicht auf Probleme stoßen. Sie haben Bürokratie überall, wo DEP, GPO, "Trusted Installer", private oder versteckte APIs, "Self Repairing Boot" usw. sind. Geeks reparieren Windows nicht, sie entscheiden sich nur dagegen. Linux hat nicht dasselbe hegemoniale Ziel. Es wird von Benutzern für Benutzer gemacht. Das ist der springende Punkt.
Alain Pannetier
3
@ SK-logic - "Wenn Sie Windows-Quellen haben" ... :-)
Rory Alsop
3
Ich habe einen Fehler in einem Linux-Systemskript gefunden und behoben. Ich habe Fehler in Windows gefunden, konnte sie aber nie beheben. Angenommen, Sie haben die Fehler behoben Haben Sie ein ISO (CD) -Image in einer Festplattendatei? Ich kann das als Laufwerk in Linux einbinden; können Sie das in Windows tun? Und denken Sie daran, dass fast alles in Linux kostenlos ist und fast alles in Windows eine teure proprietäre Anwendung erfordert.
Andy Canfield
9

Wie wäre es, wenn Sie mit Monodevelop auf Mono entwickeln? Dies würde Ihnen den Einstieg erleichtern, indem Sie Ihre Erfahrungen in .NET wiederverwenden.

Johann Blais
quelle
Ich habe es kürzlich versucht - natürlich einige Unterschiede zu Visual Studio, aber ich war an einem Abend am Laufen. Es ist ein großartiger Migrationspfad.
JBRWilkinson
8

Es ist einschüchternd, wenn man es von Anfang an betrachtet (genau wie wenn man als Linux-Entwickler mit der Entwicklung von Windows beauftragt wäre). Ich würde dieses eine Problem nach dem anderen angehen.

  • Holen Sie sich zuerst Ihre Umgebungseinstellungen (Compiler, IDE - ja, sie existieren, Netbeans / Eclipse usw.)
  • Als nächstes installieren Sie die übergeordneten APIs (Boost / Qt usw.).
  • Beginnen Sie langsam, wenn ein unmittelbares Problem zu lösen ist, lassen Sie den Code kompilieren (oder schreiben Sie von Grund auf neu usw.). Wie bei jedem Entwicklungsprojekt sollten Sie die Dinge, die Sie kennen, zuerst zum Laufen bringen (dh Dinge, die kein Betriebssystem benötigen) Interaktion), und dann, wenn Sie auf eine Snag-Suche stoßen, ist sicher jemand da draußen auf dasselbe Problem gestoßen und hat es gelöst.

Am wichtigsten ist, lassen Sie alle Ihre subjektiven Meinungen an der Tür. Und nein, Sie müssen kein Guru sein, um sich unter Linux zu entwickeln. Ich weiß genug, um herumzukommen, und nicht alles - aber ich fühle mich damit wohl ...

Nim
quelle
1
+1 Nim: StackExchange hat hier eine unglaubliche Menge an Vorinformationen. Ich fühle mich am wohlsten mit Unix-Versionen, arbeite aber derzeit in der Windows-Entwicklungsumgebung und habe mit der Suche nach SE fast alle meine Fragen innerhalb kürzester Zeit beantwortet.
Rory Alsop
6

The success or failure of many thing in life comes down to our attitude, looking for positives and keeping your mind focused on the positives will do more to adide you as you start down this new interesting adventure.

Wie lange haben Sie gebraucht, um sich in einer Windows-Umgebung zurechtzufinden? Man könnte sagen, es war einfach, als du gerade angefangen hast. Aber Sie hatten vorher ein paar Jahre mit Fenstern zu tun. Wie lange haben Sie Windows verwendet, bevor Sie Ihr erstes Programm geschrieben haben? Es waren 8 Jahre für mich, obwohl ich jetzt fast ausschließlich Linux für 5 Jahre benutze. Ich beherrsche Linux jetzt besser als Windows. Sie sollten sich mindestens so viel Zeit nehmen, um sich mit einem neuen System vertraut zu machen.

Beginnen Sie mit der Liste der Anwendungen, mit denen Sie in Windows nicht leben können, und suchen Sie nach Alternativen in der * nix-Welt. http://alternativeto.net/ und die Wikipedia weiterführende Abschnitte können hier hilfreich sein.

Hier ist eine Liste alternativer Software, die sich als sehr nützlich erweisen könnte. Hier sind einige Alternativen zu den von Ihnen erwähnten Dingen.

Weitere nützliche Ressourcen beim Wechsel von einem System zu einem anderen

Werfen Sie einen Blick auf diese Ressourcen, um ein besserer Hauptbenutzer oder Administrator zu werden

Es klingt auch so, als ob es eine Weile her ist, dass Sie sich die * nix-Welt angesehen haben. Ich würde einige der neuen Distributionen von Fedora , Suse , Debian oder meiner bevorzugten Workstation Ubuntu empfehlen .

Sie können jetzt wahrscheinlich davonkommen, ohne die Interna des Systems und nur die Grundlagen wie in Windows zu kennen. Ich würde nicht einfach versuchen, mit dem Minimum davonzukommen. Wenn Sie Linux als Tool betrachten, das Sie tatsächlich bei Ihrer Entwicklung unterstützt, und nicht nur als Betriebssystem, in dem Sie es entwickeln, wäre es hilfreich.

Linux From Scratch wird viel wichtiger sein, wenn Sie speziell für Linux entwickeln, und dies ist ein sehr spezifischer und technischer Sinn. IE, das Sie für den Kernel oder den Port, auf dem Sie programmieren, auf einem Supercomputer mit Linux entwickeln möchten. Es wäre trotzdem sehr nützlich. Ich denke, Sie könnten das wahrscheinlich für ein paar Monate lassen, während Sie nur versuchen, in Ubuntu loszulegen. Ubuntu wird so nah wie möglich an der Arbeitswelt von Mac und Windows sein.

Nelaaro
quelle
1
Debian ist nicht gerade eine neue Distribution. :-P Trotzdem ist es eine gute Wahl.
Steve S
SuSE und Fedora auch nicht ... SuSE ist jetzt 15 Jahre alt, Fedora ist in der Tat eine der "jüngeren" Distributionen, die 8 Jahre alt sind. Trotzdem +1.
DarkDust
1
@Darkdust @ Steve-s neu wie in den neuesten Versionen,
Nelaaro
6

Ich denke, Sie haben Ihre Frage in der Frage beantwortet:

"Unter Windows müssen Sie lediglich eine Programmiersprache, eine API, mit der Sie programmieren, Ihre IDE (VisualStudio) und einige grundlegende Tools zur Fehlerbehebung (Depends, ProcessExplorer, DebugView, WinDbg) kennen. Alles andere ist selbstverständlich. "

Ratet mal, unter Linux müssen Sie lediglich eine Programmiersprache, eine API (oder ein paar), Ihre IDE (Eclipse oder NetBeans, sogar Geany, Emacs oder vim, wenn Sie möchten) und einige grundlegende Tools zur Fehlerbehebung kennen ( gdb, nachverfolgungswerkzeuge, fussel, htop, ps).

Sie haben viel Wissen in das Windows-Programmier-Ökosystem investiert. Vieles davon ist (hoffentlich) abstraktes Wissen (was ist ein Compiler, ein Debugger, eine gemeinsam genutzte Bibliothek, ein Prozess, ein Thread? Was machen sie?), Das sich leicht übersetzen lässt, sobald Sie mit den verschiedenen Tools vertraut sind. Einige sind domänenspezifisch (Welche DLL ist verknüpft, wenn ich einem Projekt X hinzufüge?), Aber selbst das Wechseln von einer Sprachklasse in eine andere in Windows erfordert einige neue Lernschritte.

Installieren Sie Ubuntu oder Fedora in einer VM, lesen Sie einige C ++ Hello World in Eclipse- oder NetBeans-Tutorials und führen Sie ein Debugging in Eclipse / NetBeans-Tutorials durch, und lassen Sie die natürliche Anpassungsfähigkeit Ihres Gehirns übernehmen. Es übersetzt Ideen für Sie, wenn Sie sich entspannen und es einfach zum Laufen bringen.

Justin
quelle
3

Ich habe Unix im Allgemeinen gelernt, indem ich die Manpages gelesen habe. Sie sollten sie zumindest überfliegen. Ja, ich meine alle. Die Methode, die ich verwende, um in die Manpage-Verzeichnisse zu cden und sie abschnittsweise anzugreifen.

Ich benutze das:

for i in *; do f=`basename $i .gz`; man `basename $f .1` ; done

... Ersetzen Sie die .1 durch die Nummer des Abschnitts, den Sie gerade lesen, .2, .3 usw. Drücken Sie Strg-Z Strg-C, um die Schleife zu verlassen. Ihr Kilometerstand kann variieren, wenn Ihre Linux-Distribution Dinge anders speichert, dh nicht als cmdname.1.gz.

Gehen Sie einfach die Beschreibungen durch und mehr, wenn es etwas Interessantes ist. Die Abschnitte 1, 2 und 3 sind für einen Programmierer am wichtigsten. 1 behandelt allgemeine Benutzerbefehle, einschließlich Ihrer Kompilierungswerkzeuge, und verschiedene Forensik-Dienstprogramme. 2 sind Systemaufrufe und 3 sind Bibliotheksaufrufe.

Hack Saw
quelle
2
Ich würde vorschlagen, xmanals "freundlicher" Schnittstelle zu starten. Wählen Sie einen Abschnitt aus, klicken Sie auf die Manpage und lesen Sie sie. Spülen, wiederholen.
ΤΖΩΤΖΙΟΥ
Ich hatte solche Dinge vergessen. Der Dokumentationsstatus in Free OS Land ist nicht optimal, und die Tools haben sich oft verschlechtert, sodass ich sie nicht mehr verwende. Ich kann nur davon ausgehen, dass sie etwas besser geworden sind?
Hack Saw
3

Zwingen Sie sich nicht dazu, etwas zu tun, das Sie nicht mögen. Verwenden Sie Windows als Entwicklungsumgebung, schreiben Sie einen portablen Code, kompilieren Sie ihn für Linux und testen Sie ihn nur gelegentlich in einer VM.

SK-Logik
quelle
2

Ich bin mir nicht sicher, ob es für Plattformen funktioniert, aber für Programmiersprachen. Ich fand es hilfreich, darüber nachzudenken, wie ich mich mit denjenigen, in denen ich gut bin, vertraut gemacht und mich damit vertraut gemacht habe, und zu versuchen, diese Erfahrungen und Aktivitäten für das, was ich tue, noch einmal abzuspielen. Ich versuche zu lernen.

Vielleicht etwas in diesen Zeilen?

Generell gesehen ist mein Interesse und Vertrauen in GNU / Linux dadurch gewachsen, dass es viel bastelbarer ist (und in den Anfangszeiten noch bastelbedürftiger ist) als Windows. Ich musste mit vielen Dingen herumspielen, um die Dinge zum Laufen zu bringen, und das half mir, viele Dinge zu lernen. Die Dinge sind jetzt viel besser, aber all diese Stunden haben geholfen.

Noufal Ibrahim
quelle
2

Ich war einer von zwei, die mit etwas Ähnlichem, aber anderem beauftragt waren. Ich arbeite in einem K-12-Schulbezirk und das Geschäftssystem (HR, Finanzen usw.) wird von einer HP3000 / TurboImage-Datenbank auf eine Linux / MS SQL-Plattform migriert. Ich bin mit der MS SQL-Seite vertraut. Aber nicht die Linux-Seite. Wir beide sind auf der Admin-Seite, nicht auf der Programmierseite. Die Programmierung erfolgt außerhalb - 3rd-Party-Business-App für K-12-Organisationen.

Ich nahm an Wochenenden an einem 5-wöchigen Einführungskurs in Linux (Redhat) teil - hauptsächlich im Befehlszeilenmodus - und es hat sich für mich als schneller Einstieg in die Linux-Arbeitsweise gelohnt. Offensichtlich YMMV je nach Klasse / Lehrer.

Sie haben "Das Schlimmste von allem: Wie wird eine Linux-Entwicklungsumgebung bereitgestellt?" Da Sie mit Windows bereits sehr vertraut sind, empfehle ich dringend, eine Kopie von vmWare Workstation zu erwerben. Damit können Sie Windows als Workstation behalten und Linux als Gastsystem installieren - löschen, spülen und nach Bedarf wiederholen. Wenn Sie ein gutes Setup haben, können Sie einen Snapshot erstellen, aber ich kann nicht genau sagen, welche Versionen den Snapshot-Aspekt unterstützen. Und wenn Sie die vmWare Workstation-Route wählen, um mehrere Entwicklungs-Setups zu aktivieren, erhöhen Sie auf jeden Fall den Speicher.

Es macht mir auch nichts aus, CentOS als Linux-Betriebssystem für die Gäste zu empfehlen. Soweit ich weiß, ist es wie bei RedHat, ohne das Branding und / oder die Verkaufsargumente und / oder die Supportkosten. Ich bin mit den anderen Linux-Varianten nicht vertraut und kann daher keine Eingaben dazu machen.

Greg

Gregory Thomson
quelle
1

Ich mag beide Plattformen und trotz der Unterschiede in der Benutzeroberfläche und im Entwicklungs-Ökosystem finde ich sie ähnlicher als anders. Tatsächlich können Sie für die meisten Windows-Konzepte äquivalente Linux-Konzepte finden, indem Sie einfach im Internet suchen.

Trotzdem empfehle ich dringend, zu lernen, wie man Dinge auf "Unix-Weise" macht. Verwenden Sie die Befehlszeile anstelle von fehlerhaften GUI-Frontends (ich spreche hier hauptsächlich von GDB). Suchen Sie nicht nach einer IDE und lernen Sie stattdessen, wie Sie eine Reihe spezialisierter Tools verwenden. Wählen Sie einen guten Editor (der auf vim zeigt) und lernen Sie es gut. Lesen Sie, wie es makefunktioniert, auch wenn Sie nicht vorhaben, Experte zu werden. Vielleicht magst du sogar Linux. Es ist Geek-freundlich und macht Spaß, damit zu spielen.

Nemanja Trifunovic
quelle
1

Bedenken Sie Folgendes: Sie haben einmal nichts über Windows gewusst, es aber gelernt und sich im Laufe der Zeit damit angefreundet.

Dann änderte MS das Programmiersystem, mit dem Sie vertraut waren, auf .NET und Sie wussten nichts mehr über DLLS, COM und was auch immer, Sie mussten Dinge wie Assemblys, GACs und Anwendungsdomänen lernen. Du hast das ok gelernt.

Warum machen Sie sich jetzt Sorgen, dasselbe mit Linux zu tun?

Es gibt jede Menge Tutorials im Internet, mit denen Sie loslegen können, und zwar für alle Arten von Programmierumgebungen. Jetzt sagst du GCC, also gehe ich von der C ++ - Entwicklung aus. Holen Sie sich Eclipse, installieren Sie das CDT (c dev tools) auf Ihrer Eclipse-Plattform (Eclipse ist eine Mehrzweck-IDE, Sie können es für C ++, PHP, Java usw. verwenden, aber Sie müssen das Tool für Ihre Sprache installieren da du nicht wirklich willst, dass alles wie bei VS vorinstalliert ist und es 3 Tage dauert, bis es installiert ist :))

Es gibt benutzerfreundliche Tutorials im ganzen Web. IBM hat hier eine , die ziemlich umfassend ist.

Debugging-Tools ... eclipse hat es eingebettet ( Tutorial ), aber Sie können viele Tools finden, wie die, die Sie erwähnt haben. Durchsuchen Sie einfach das Web und Sie werden viele Optionen finden. Es wird eine Weile dauern, bis Sie herausgefunden haben, wie ein Core-Dump gelesen wird (im Gegensatz zu einem Windows-Userdump zum Beispiel), aber Sie werden dorthin gelangen.

Es könnte sich auch lohnen, ein Blog mit Ihren Erfahrungen zu beginnen. Sie können sich nicht nur daran erinnern, was Sie getan haben (z. B. Einrichten von Eclipse, wie es Ihnen gefällt, Sie werden vergessen, wenn Sie es in einem Blog erneut tun müssen Jahr), aber es wird anderen in Ihrer Situation helfen.

gbjbaanb
quelle
0

Ich glaube nicht, dass Sie Linux von Grund auf neu machen müssen. Wenn ich du wäre, würde ich mich für Ubuntu entscheiden. Es ist komfortabler und da es auf Debian basiert, gibt es genügend technisches Material.

Wenn Sie sich mehr mit Linux beschäftigen möchten, ist Gentoo eine gute Option. Es erfordert, dass Sie viel über Konfiguration und Kernel lesen, aber es gibt Ihnen auch ein funktionierendes System, in dem Sie arbeiten können

anders.norgaard
quelle
0

Google "Die Kunst der Unix-Programmierung" und lesen Sie es. IMO, Ihre Hauptschwierigkeit ist die unterschiedliche Philosophie, und dieses Buch ist eine ausgezeichnete Lektüre dafür.

Außerdem lernen Sie einige nicht offensichtliche, aber technisch sehr wichtige Unterschiede zwischen * n * x- und Windows-Systemen kennen. Dies ist der Schlüssel zum Verständnis, warum eine andere Vorgehensweise unter Linux sinnvoll ist.

user59625
quelle
1
... und es bietet Ihnen eine Vielzahl von Tools und Techniken, die Sie unter Linux verwenden können.
0

Die erste Frage, die ich stellen möchte, lautet: Was möchten Sie entwickeln? Wenn es sich um eine GUI-basierte Anwendung handelt, kann dies etwas anderes sein als das Schreiben einer Kernel-Erweiterung.

Im Fall einer GUI-App ist die einfachste Methode die Verwendung von Qt, das über eine eigene Entwicklungsumgebung (Qt-Creator) verfügt und es Ihnen ermöglicht, plattformübergreifend nur eine API zu erlernen, die für Windows / Linux verwendet werden kann / OSX und sogar mobile Entwicklung. Wie in Visual Studio unter Windows oder XCode unter OSX können Sie Fenster und Elemente in einem grafischen Editor erstellen und layouten. Die API ist mit zahlreichen Beispielanwendungen sehr einfach zu erlernen.

Wenn Sie eine niedrigere Version benötigen, können Sie, sobald Sie sich in der Befehlszeile mit Linux auskennen, Verzeichnisse durchlaufen, Dateien bearbeiten, Berechtigungen usw. verstehen. Lesen Sie dann entweder, wie Sie ein einfaches Programm mit gcc kompilieren. wie man Dateien verknüpft und die ausführbare Datei ausführt und wie man dann mit gdb debuggt.

Alternativ können Sie Eclipse oder eine andere IDE herunterladen, wenn dies ein wenig entmutigend erscheint. Langfristig werden Sie sich jedoch wahrscheinlich mit Linux wohler fühlen, wenn Sie Zeit und Mühe in die Befehlszeile stecken.

Der dunkle Ritter
quelle