Saya perlu merekonsiliasi 2 fakta ini:
- Saya merasa tidak nyaman bekerja di Linux;
- Saya perlu mengembangkan perangkat lunak untuk Linux.
Beberapa latar belakang: Saya memiliki 10+ tahun pengalaman pemrograman di Windows (hampir secara eksklusif C / C ++, tetapi beberapa .NET juga), saya adalah pengguna FreeBSD di rumah selama sekitar 3 tahun atau lebih (kemudian harus kembali ke Windows), dan saya tidak pernah beruntung dengan Linux. Dan sekarang saya harus mengembangkan perangkat lunak untuk Linux. Saya butuh rencana.
Di Windows, Anda bisa lolos hanya dengan mengetahui bahasa pemrograman, API yang Anda koding, IDE (VisualStudio) dan beberapa alat yang sangat mendasar untuk pemecahan masalah (Tergantung, ProcessExplorer, DebugView, WinDbg). Segala sesuatu yang lain datang secara alami.
Di Linux, ini adalah cerita yang sangat berbeda. Bagaimana saya tahu apa yang akan dimuat DLL (maaf, Shared Object), jika saya menautkannya dari plugin Firefox? Apa yang setara dengan Linux dengan memasukkan __asm int 3 / DebugBreak () di sumber dan menjalankan program, dan kemudian membiarkan OS memanggil debugger? Mengapa rilis build menggunakan sesuatu, yang disebut appLoader, sementara debug build bekerja dengan cara yang berbeda? Terburuk dari semua: bagaimana cara menyediakan lingkungan pengembangan Linux?
Jadi, dengan mempertimbangkan bahwa kebencian biasanya dikaitkan dengan tidak cukup tahu, apa yang akan Anda rekomendasikan? Saya setuju dengan Emacs dan GCC. Saya perlu mendidik diri saya sebagai admin / pengguna Linux, dan saya perlu belajar alat troubleshooting yang tepat (strace is cool, btw), setara dengan yang saya sebutkan di atas.
Apakah saya perlu melakukan Linux dari Awal? Atau apakah saya perlu membaca beberapa buku saja (saya sudah membaca "lingkungan pemrograman UNIX" oleh Kernighan dan "Pemrograman Lanjut ..." oleh Stevens, tetapi saya perlu belajar sesuatu yang lebih praktis)? Atau apakah saya perlu memiliki distro Linux di komputer rumah saya?
man
adalah teman Anda. Saya akan man nm
dan man ld
sebagai titik awal.