ฉันต้องตรวจสอบข้อเท็จจริง 2 ข้อต่อไปนี้:
- ฉันรู้สึกไม่สะดวกใจที่จะทำงานกับ Linux
- ฉันต้องการพัฒนาซอฟต์แวร์สำหรับ Linux
พื้นหลังบางอย่าง: ฉันมีประสบการณ์การเขียนโปรแกรม 10 ปีขึ้นไปบน Windows (เกือบจะเฉพาะ C / C ++ แต่บางอย่างเช่น. NET) ฉันเป็นผู้ใช้ FreeBSD ที่บ้านประมาณ 3 ปีหรือมากกว่านั้น (ต้องกลับไปที่ Windows) และฉันไม่เคยโชคดีกับ Linux มาก่อน และตอนนี้ฉันต้องพัฒนาซอฟต์แวร์สำหรับ Linux ฉันต้องการแผน
ใน Windows คุณสามารถรู้ได้ด้วยภาษาการเขียนโปรแกรม API ที่คุณเข้ารหัส IDE (VisualStudio) และเครื่องมือพื้นฐานบางอย่างสำหรับการแก้ไขปัญหา (ขึ้นอยู่กับ ProcessExplorer, DebugView, WinDbg) ทุกอย่างมาจากธรรมชาติ
บน Linux มันเป็นเรื่องที่แตกต่างกันมาก ฉันจะรู้ได้อย่างไรว่า DLL (ขอโทษด้วยวัตถุที่ใช้ร่วมกัน) จะโหลดได้อย่างไรถ้าฉันลิงก์ไปยังปลั๊กอิน Firefox อะไรคือ Linux ที่เทียบเท่ากับการแทรก __asm int 3 / DebugBreak () ในแหล่งที่มาและเรียกใช้โปรแกรมแล้วปล่อยให้ระบบปฏิบัติการเรียก debugger? เหตุใดการสร้างรุ่นนรกจึงใช้บางสิ่งบางอย่างที่เรียกว่า appLoader ในขณะที่การตรวจแก้จุดบกพร่องรุ่นทำงานแตกต่างกันอย่างไร แย่ที่สุดของทั้งหมด: วิธีการจัดเตรียมสภาพแวดล้อมการพัฒนา Linux?
ดังนั้นเมื่อคำนึงถึงความเกลียดชังมักเกี่ยวข้องกับการไม่รู้จักพอคุณจะแนะนำอะไร ฉันโอเคกับ Emacs และ GCC ฉันต้องให้การศึกษาตนเองในฐานะผู้ดูแลระบบ / ผู้ใช้ Linux และฉันต้องเรียนรู้เครื่องมือแก้ไขปัญหาที่เหมาะสม (strace is cool, btw) เทียบเท่ากับเครื่องมือที่ฉันกล่าวถึงข้างต้น
ฉันต้องทำ Linux จาก Scratch หรือไม่? หรือฉันต้องอ่านหนังสือบางเล่ม (ฉันอ่าน "สภาพแวดล้อมการเขียนโปรแกรม UNIX" โดย Kernighan และ "Advanced Programming ... " โดย Stevens แต่ฉันต้องเรียนรู้สิ่งที่เป็นประโยชน์มากกว่านี้)? หรือฉันต้องมีลีนุกซ์ distro บนคอมพิวเตอร์ที่บ้านของฉัน?
man
คือเพื่อนของคุณ ฉันจะman nm
และman ld
เป็นจุดเริ่มต้น