Как начать программировать под Linux

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

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

Что именно вы имеете в виду под профессиональными проектами? Я знаю ряд инструментов на основе скриптов, которые используются профессионалами, и поэтому их можно назвать профессиональными проектами. Но также у каждого проекта будет лучший инструмент, так что это за проекты: музыка, графический интерфейс, сервер, графика, игры?

cdeszaq 16.10.2008 20:36

Придумайте более информативный заголовок для вашего вопроса.

PeterAllenWebb 16.10.2008 20:52

Не надо. Напишите весь код кроссплатформенного, чтобы он был действительным win / lin / bsd / mac.

Tim Matthews 25.01.2009 15:28
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
10
3
6 835
11
Перейти к ответу Данный вопрос помечен как решенный

Ответы 11

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

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

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

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

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

он спросил, как начать программировать (а не однострочники bash)

Quamis 07.01.2009 15:46

Он четко пометил свой вопрос с помощью C / C++, почему вы предлагаете bash, ruby, python e.t.c ????

kazanaki 30.04.2012 16:01

Знание API C / C++ в Linux дает вам только часть пути - обычно вам нужно знать о сценариях оболочки, чтобы вы могли писать сценарии сборки, сценарии установки и т. д.

the_mandrill 30.08.2013 14:02

Прагматичный ответ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ответ принят как подходящий

Начните читать книгу Продвинутое программирование Linux, которая также доступна в виде бесплатного PDF-файла.

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

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

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

Читать Искусство программирования UNIX http://ecx.images-amazon.com/images/I/51HJF%2B%2BjseL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA240_SH20_OU01_.jpg

Это поможет вам понять, почему все делается так, как есть в системе на основе * unix.

Лучше получить его прямо в источнике (поскольку он включает в себя бесплатную версию, доступную для просмотра, исправления и т. д.): catb.org/esr/writings/taoup

Olivier Dulac 04.11.2013 17:36

Другие вопросы по теме