Ich muss diese 2 Fakten in Einklang bringen:
- Ich fühle mich nicht wohl, wenn ich unter Linux arbeite.
- 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?
man
ist dein Freund. Ich würde man nm
und man ld
als Ausgangspunkt.