Как запустить Linux-программирование

Я работаю над С++ и COM/ATL в Windows за последние несколько лет. Теперь я хочу перейти на Linux Programming. Я знаю основную архитектуру Linux. Я сделал некоторые из проектов, которые используют ncurses, сокеты и аудио-библиотеки (Terminal Applications). На каком инструменте я должен быть знаком с проектами. В Windows я начал с программирования Win32, затем перешел на COM и ATL. Программирование Win32 дало мне представление о Windows.

Можете ли вы дать мне шаги для начала программирования Linux?

Ответ 1

Начните читать книгу Расширенное программирование Linux, которое также доступно в виде бесплатного PDF.

Не бойтесь расширенного ключевого слова. Из деталей вашего сообщения (ncurses, socket) вы уже "продвинуты".

Вы также можете посмотреть позже в glib (стандартный компонент GTK +/GNOME, но также используется в приложениях командной строки.)

Если вам абсолютно необходимо программировать на С++, прочитайте всю документацию QT и вам хорошо идти.

Ответ 2

  • GCC/г ++
  • понять основы оболочки: возможно, bash (обычно по умолчанию)
  • make (вам не обязательно быть экспертом или даже использовать его в своей собственной работе, но вы должны это понимать)
  • язык сценариев (bash, ruby, python, tcl, perl; вы выбираете)
  • базовые утилиты командной строки unix (ls, cd и т.д.).
  • Редактор: vi или emacs являются наиболее популярными.
  • Linux. ваше распространение в частности (ubuntu популярен, вы можете начать там). знать, как tweek вашей среды и как исправить вещи, когда они ломаются.

Остальное зависит от того, что вы хотите сделать.

Вам не обязательно быть экспертом в этом; вы будете учиться с течением времени.

Ответ 3

Зависит от того, что вы пытаетесь сделать...

Собираетесь ли вы делать графические приложения? Изучите Qt или GTK или wxWidgets. Вы собираетесь заниматься разработкой драйверов устройств? Изучите прямой C, а не только С++. Многие захватывающие разработки программного обеспечения под Linux происходят в Python и Perl (и в других динамических языках в меньшей степени), поэтому вы должны почти наверняка изучить один из них.

Ответ 4

Прагматический ответ

Я понимаю, почему вы задаете свой вопрос таким образом, но Linux не является Windows, поэтому на самом деле нет прямого ответа. На самом деле мы говорим о GNU/linux + всей бесплатной экосистеме программного обеспечения, поэтому то, что вы должны узнать, во многом зависит от того, что вы хотите сделать.

Если вы больше занимаетесь системным программированием, вы будете смотреть на ядро ​​Linux и должны работать с вашими навыками C.

Если вы хотите использовать утилиты для кодов, скриптовые языки (особенно ruby ​​и python) будут вашими инструментами выбора, и вам придется выбирать инфраструктуру графического интерфейса поверх этого (GTK, QT и wxWidget показывают способ).

Если это больше о веб-и сетевом программировании, это может сделать python, ruby, php или java.

Хорошие новости

В Linux env у вас есть выбор, потому что многие люди используют множество разных инструментов. Это может показаться беспорядочным и часто, но это работает не так уж плохо.

Так что перестань думать о том, что нужно изучать, и сосредоточьтесь на двух вопросах:

  • Я хочу присоединиться к проекту? Затем техно будет выбран по проекту, к которому вы присоединяетесь. Поэтому выберите проект, используя технику, которую ВЫ ХОТИТЕ учиться.
  • Я хочу начать свой собственный проект? Затем техно будет выбран существующим инструментом, на который вы будете положиться. В большинстве случаев у вас будет выбор, так что наслаждайтесь новой свободой и изучите технику, которую ВЫ ХОТИТЕ.

Свободно, как и в случае со свободой, означает, что вы можете выбрать.

Ответ 6

Я также рекомендую вам изучить STL и Boost - последнее особенно полезно при написании приложений на С++ в Linux, поскольку вы получаете библиотеки для потоковой обработки, файловой системы, регулярного выражения и т.д. Кроме того, код можно портировать обратно в Windows, если это необходимо. Вот как я начал работать в Linux - я взял проект Windows и преобразовал его в STL/Boost и добавил пользовательский интерфейс на основе браузера. После того, как он был запущен в Windows, но без каких-либо конкретных особенностей Windows в коде, я начал изучать основы Linux (gcc, make и т.д.) И быстро работал.

Ответ 7

Нарисуйте свои и без того тяжелые знания COM и узнайте что-то вроде TAO. Очевидно, что в мире unix нет ATL или WTL... поэтому вам нужно будет потратить время на изучение STL - хорошие новости - STL существует и в Windows. Boost поможет вам значительно упроститься между платформами, так что вы тоже должны это узнать.

Помимо этого, это действительно зависит от того, что вы хотите сделать.

Ответ 8

Я предлагаю изучить CMake - это отличный инструмент кросс-платформенной сборки, который намного проще в использовании, чем make/autotools.

Ответ 9

Я бы порекомендовал вам начать с использования Gentoo, это должно быть тяжело в первые недели, но через некоторое время (скажем, 2 месяца и меньше, если у вас есть базовый Linux-интерфейс), вы сможете использовать каждый дистрибутив, и вы будете знать точно, что произойдет и как в вашей системе, когда вы нажмете/цифру что-нибудь, я думаю, что вы будете повторно оплачены за это больше времени (узнайте, что gentoo немного сложнее других дистрибутивов), потраченных на Gentoo. И это, я думаю, будет полезно при программировании для Linux.

Ответ 10

При разработке для Linux я склонен придерживаться основ: vim, gcc, gdb (из командной строки, без передних концов), svn, cscope, Valgrind, make (не то, что я большой поклонник make, я признавать). Существуют различные графические интерфейсы, и даже IDE, но мне не нравится ни один из них.

Ответ 11

Не могли бы вы рассказать о тех вещах, которые вы надеетесь сделать, в том, что касается программирования Linux? У этого может быть больше всего того, что вы надеетесь пройти независимо.