Muszę pogodzić te 2 fakty:
- Nie czuję się komfortowo pracując na Linuksie;
- Muszę opracować oprogramowanie dla systemu Linux.
Trochę tła: mam ponad 10-letnie doświadczenie w programowaniu w systemie Windows (prawie wyłącznie C / C ++, ale także niektóre .NET), byłem użytkownikiem FreeBSD w domu przez około 3 lata (potem musiałem wrócić do Windows) i nigdy nie miałem dużo szczęścia z Linuksem. A teraz muszę opracować oprogramowanie dla systemu Linux. Potrzebuję planu.
W systemie Windows możesz oderwać się od znajomości języka programowania, interfejsu API, na którym kodujesz, swojego IDE (VisualStudio) i kilku bardzo podstawowych narzędzi do rozwiązywania problemów (Depends, ProcessExplorer, DebugView, WinDbg). Wszystko inne przychodzi naturalnie.
W systemie Linux jest to zupełnie inna historia. Skąd, do diabła, miałbym wiedzieć, jakie biblioteki DLL (przepraszam, obiekt współdzielony) zostałyby załadowane, jeśli odsyłam do niego z wtyczki Firefox? Jaki jest odpowiednik wstawienia __asm int 3 / DebugBreak () w źródle i uruchomienia programu, a następnie umożliwienia systemowi operacyjnemu wywołania debuggera? Dlaczego kompilacje wersji Hell korzystają z czegoś, o nazwie appLoader, podczas gdy kompilacje debugowania działają w jakiś inny sposób? Co najgorsze: jak udostępnić środowisko programistyczne dla systemu Linux?
Biorąc pod uwagę, że nienawiść zwykle wiąże się z niewystarczającą wiedzą, co byś polecił? Nie mam nic przeciwko Emacsowi i GCC. Muszę kształcić się jako administrator / użytkownik Linuksa i muszę nauczyć się odpowiednich narzędzi do rozwiązywania problemów (strace jest fajne, btw), odpowiedników tych wymienionych powyżej.
Czy muszę robić Linuksa od zera? Czy też muszę po prostu przeczytać kilka książek (przeczytałem „Środowisko programowania UNIX” Kernighana i „Advanced Programming ...” Stevensa, ale muszę nauczyć się czegoś bardziej praktycznego)? Czy też muszę mieć dystrybucję Linuksa na moim komputerze domowym?
man
jest twoim przyjacielem. Chciałbym man nm
i man ld
jako punkt wyjścia.