Мені потрібно узгодити ці 2 факти:
- Мені не комфортно працювати в Linux;
- Мені потрібно розробити програмне забезпечення для Linux.
Деякі передумови: у мене 10+ років досвіду програмування в Windows (майже виключно C / C ++, але деякі .NET також), я був користувачем FreeBSD вдома близько 3 років або близько того (тоді довелося повернутися до Windows), і мені ніколи не пощастило з Linux. І тепер мені доводиться розробляти програмне забезпечення для Linux. Мені потрібен план.
У Windows ви можете піти з просто знання мови програмування, API, який ви кодуєте, свого IDE (VisualStudio) та деяких дуже основних інструментів для усунення несправностей (залежно, ProcessExplorer, DebugView, WinDbg). Все інше відбувається природним шляхом.
В Linux це зовсім інша історія. Звідки я б знав, що завантажуватиме DLL (вибачте, Shared Object), якщо я посилаюся на нього з плагіна Firefox? Що таке еквівалент Linux для вставки __asm int 3 / DebugBreak () у джерело та запуску програми, а потім дозволити ОС викликати відладчик? Чому білі версії випуску використовують щось, що називається appLoader, а збірки налагоджень працюють якось інакше? Найгірше: як забезпечити середовище розробки Linux?
Отже, беручи до уваги те, що ненависть зазвичай пов’язана з недостатньою обізнаністю, що б ти порадив? Я все в порядку з Emacs та GCC. Мені потрібно виховувати себе як адміністратора / користувача Linux, і мені потрібно навчитися належним інструментам усунення несправностей (strace cool, btw), еквівалентам тим, про які я згадував вище.
Чи потрібно робити Linux з Scratch? Або мені потрібно просто прочитати деякі книги (я читав "Середовище програмування UNIX" Керніган та "Розширене програмування ..." Стівенса, але мені потрібно навчитися чомусь більш практичному)? Або мені потрібен якийсь дистрибутив Linux на домашньому комп’ютері?
man
- ваш друг. Я б man nm
і man ld
як відправна точка.