Bu iki gerçeği uzlaştırmam gerekiyor:
- Linux üzerinde çalışmaktan rahat hissetmiyorum;
- Linux için bir yazılım geliştirmem gerekiyor.
Bazı arkaplanlar: Windows'ta 10+ yıllık bir programlama tecrübem var (neredeyse sadece C / C ++, fakat bazı .NET'ler de), yaklaşık 3 yıl boyunca evde FreeBSD kullanıcısıydım (daha sonra geri dönmek zorunda kaldım). Windows) ve Linux'a hiç şansım olmadı. Ve şimdi Linux için bir yazılım geliştirmem gerekiyor. Bir plana ihtiyacım var.
Windows'ta, sadece bir programlama dili, kodladığınız bir API, IDE'niz (VisualStudio) ve sorun giderme için bazı çok temel araçlar (Depends, ProcessExplorer, DebugView, WinDbg) tanıyarak kurtulabilirsiniz. Her şey doğal geliyor.
Linux'ta bu çok farklı bir hikaye. Firefox eklentisinden bağlanırsam hangi DLL dosyasının (üzgünüm, Paylaşılan Nesne) yükleneceğini nasıl bileceğim? Kaynağa __asm int 3 / DebugBreak () ekleme ve programı çalıştırma ve ardından işletim sisteminin hata ayıklayıcıyı çağırmasına izin veren Linux'un karşılığı nedir? Neden cehennem sürümleri appLoader adında bir şey kullanıyor, hata ayıklama sürümleri nedense farklı çalışıyor? Hepsinden kötüsü: Linux geliştirme ortamı nasıl sağlanmalı?
Öyleyse, nefretin genellikle yeterince bilmemekle ilişkili olduğunu dikkate alarak ne önerirsiniz? Emacs ve GCC ile iyiyim. Kendimi bir Linux yöneticisi / kullanıcısı olarak eğitmem gerekiyor ve yukarıda belirtilenlere eşdeğer olan uygun sorun giderme araçlarını (strace havalı, btw) öğrenmem gerekiyor.
Sıfırdan Linux yapmam gerekir mi? Yoksa sadece bazı kitapları okumam mı gerekiyor (Kernighan'ın "UNIX programlama ortamı" nı ve Stevens'ın "Gelişmiş Programlaması ..." nı okudum, fakat daha pratik bir şeyler öğrenmem gerekiyor)? Yoksa ev bilgisayarımda Linux dağıtımı yapmam gerekir mi?
man
senin arkadaşın. Ben man nm
ve man ld
bir başlangıç noktası olarak.