Разработка C ++ для Unix из Windows, нативный вызов функций? - PullRequest
2 голосов
/ 15 ноября 2011

Я бы хотел задать несколько конкретных вопросов, касающихся написания C ++ для Unix, в отличие от Windows.

  1. В Windows для вызова собственных функций ОС вы обычно ссылаетесь на .dll или включаете windows.h Аналогично, как вы относитесь к базовым функциям ОС в Unix?

  2. Существует ли справочное руководство для всех базовых функций ОС в Unix? (чтобы было видно, какие функции доступны).

  3. Каков наилучший способ «включить» библиотеки наддува? Использовать IDE, такую ​​как версия eclipse C / C ++, и включить boost, как в Windows?

Спасибо

Ответы [ 3 ]

2 голосов
/ 15 ноября 2011

1) Нет единого заголовочного файла. Вы не вызываете системные вызовы напрямую, вместо этого они обычно вызываются косвенно через стандартную библиотеку c, такую ​​как fopen (в случае fopen вы также можете вызвать базовую функцию open, но это делает программу менее переносимой). Упоминание того, на какие системные вызовы вы конкретно ссылаетесь, поможет

2) Похоже, вы новичок в разработке на платформе Unix. Я настоятельно рекомендую «Расширенное программирование в среде UNIX» Ричарда Стивенса.

3) Вам следует ознакомиться с утилитой make. То, что обычно скрыто в окнах вашей IDE. Кроме того, библиотека Boost поставляется с примерами программ.

1 голос
/ 15 ноября 2011

В системах Unix функции Unix обычно находятся в libc вместе со стандартной библиотекой C.Компилятор автоматически связывает это с вашим исполняемым файлом, как правило, как «разделяемая библиотека», которая похожа на Windows DLL, но также не совсем.

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

Существуют специальные функции, которые реализованы как системные вызовы.Для среднего программиста на Си тот факт, что определенная функция является системным вызовом, является деталью реализации.Но часто стоит отметить, какие именно это функции, поскольку они помогают вам понять, что ОС делает для вас, и что делает библиотека, которую вы используете.Это различие, как правило, очень трудно установить в Windows.

Большинство программистов Unix все еще используют make и утилиты командной строки.Это означает, что здесь нет настроек IDE или чего-то еще.Вам нужно будет выяснить, какие флаги передать компилятору.Как правило, это не так уж сложно.

Кроме того, большинство систем Unix не устанавливают программное обеспечение по всей файловой системе.Если это включаемый файл, который является частью установленного пакета, он будет находиться в каталоге / usr / include.Это означает, что вам не нужно будет волшебным образом определять местоположение включаемых файлов Boost.Они будут в / usr / include вместе со всем остальным.

И хотя вам, возможно, придется выяснить, какие именно библиотеки Boost вам нужны (например, -lboost_filesystem), все библиотеки Boost будут в /usr/libили /usr/lib64 со всеми остальными библиотеками, чтобы вам не приходилось выяснять, где они находятся.

1 голос
/ 15 ноября 2011
  1. Нет единого заголовка, который можно включить, чтобы иметь доступ ко всем * nix функциям; см. соответствующую справочную страницу в разделах 2, 3 или 3p для соответствующей функции, чтобы узнать, какие заголовки и библиотеки вам нужны.

  2. Каждый * nix имеет тенденцию следовать POSIX или SUS в различной степени.

  3. ... Что?

...