Мне нужно согласовать эти 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 - это круто), эквиваленты тем, которые я упоминал выше.
Нужно ли делать Linux с нуля? Или мне нужно просто прочитать некоторые книги (я читал «Среду программирования UNIX» Кернигана и «Расширенное программирование ...» Стивенса, но мне нужно изучить что-то более практичное)? Или мне нужно иметь какой-нибудь дистрибутив Linux на моем домашнем компьютере?
man
это твой друг. Я бы man nm
и man ld
в качестве отправной точки.