KnigaRead.com/

Д. Стефенс - C++. Сборник рецептов

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Д. Стефенс, "C++. Сборник рецептов" бесплатно, без регистрации.
Перейти на страницу:

George, and Ringo

на консоль. И снова реализация georgeringo() разделена на два исходных файла — george.cpp и ringo.cpp.

Пример 1.2. Исходный код libgeorgeringo


georgeringo/george.hpp

#ifndef GEORGE_HPP_INCLUDED

#define GEORGE_HPP_INCLUDED


void george(); // Печатает "George, "


#endif // GEORGE_HPP_INCLUDED


georgeringo/george.cpp

#include <iostream>

#include "george.hpp"


void george()

 std::cout << "George, ";

}


georgeringo/ringo.hpp

#ifndef RINGO_HPP_INCLUDED

#define RINGO_HPP_INCLUDED


void ringo(); // Печатает "and Ringon"


#endif // RINGO_HPP_INCLUDED


georgeringo/ringo.cpp

#include <iostream>

#include "ringo.hpp"


void ringo() {

 std::cout << "and Ringon";

}


georgeringo/georgeringo.hpp

#ifndef GEORGERINGO_HPP_INCLUDED

#define GEORGERINGO_HPP_INCLUDED


// определите GEORGERINGO_DLL при сборке libgeorgeringo.dll

#if defined(_WIN32) && !defined(__GNUC__)

#ifdef GEORGERINGO_DLL

# define GEORGERINGO_DECL __declspec(dllexport)

#else

# define GEORGERINGO_DECL __declspec(dllimport)

#endif

#endif // WIN32

#ifndef GEORGERINGO_DECL

# define GEORGERINGO_DECL

#endif


// Печатает "George, and Ringon"

#ifdef __MWERKS__

# pragma export on

#endif


GEORGERINGO_DECL void georgeringo();


#ifdef __MWERKS__

# pragma export off

#endif

#endif // GEORGERINGO_HPP_INCLUDED


georgeringo/georgeringo.cpp

#include "george.hpp"

#include "ringo.hpp"

#include "georgeringo.hpp"


void georgeringo() {

 george();

 ringo();

}

Заголовок georgeringo.hpp содержит несколько сложных директив препроцессора. Если вы их не понимаете, не страшно. Я объясню их в рецепте 1.4.

Наконец, исходный код исполняемого файла hellobeatles представлен в примере 1.3. Он состоит из единственного исходного файла hellobeatles.cpp, который просто включает заголовки johnpaul.hpp и georgeringo.hpp и вызывает функцию johnpaul(), а вслед за ней — функцию georgeringo().

Пример 1.3. Исходный код hellobeatles


hellobeatles/ hellobeatles.cpp

#include "johnpaul/johnpaul.hpp"

#include "georgeringo/georgeringo.hpp"


int main() {

 // Печатает "John, Paul, George, and Ringon"

 johnpaul();

 georgeringo();

}

1.1. Получение и установка GCC

Проблема

Вы хотите получить GCC — свободно распространяемый компилятор GNU C/С++.

Решение

Решение зависит от вашей операционной системы.

Windows

Установите MinGW, Cygwin или оба.

Чтобы установить MinGW, посетите страницу MinGW по адресу www.mingw.org и проследуйте по ссылкам до страницы загрузки MinGW. Скачайте последнюю версию программы установки MinGW, которая должна иметь имя MinGW-<версия>.exe.

Далее запустите программу установки. Она попросит вас указать, куда вы хотите установить MinGW. Также она может спросить, какие пакеты вы хотите установить, - как минимум вы должны установить gcc-core, gcc-g++, binutils и среду выполнения MinGW, но можно установить и другие. По окончании установки вы сможете запустить из командной строки Windows gcc, g++, ar, ranlib, dlltool и некоторые другие инструменты GNU. Вам может потребоваться добавить директорию bin установки MinGW в переменную среды окружения PATH, с тем чтобы эти инструменты в командной строке вызывались по их имени, без указания полного пути к ним.

Чтобы установить Cygwin, посетите страницу Cygwin по адресу www.cygwin.com и для загрузки программы установки Cygwin проследуйте по ссылке Install Cygwin Now. Далее запустите программу установки. Она попросит вас выбрать несколько опций, таких как путь, куда следует устанавливать Cygwin.

Я подробно описываю процесс установки Cygwin, потому что он может оказаться несколько запутанным, в зависимости от того, что вы хотите установить. К тому моменту, как вы будете читать эту книгу, этот процесс может измениться, и, если это произойдет, он, возможно, станет проще.

Наиболее важным выбором является выбор пакетов. Если у вас достаточно места на диске и высокоскоростное соединение с Интернетом, я рекомендую устанавливать все пакеты. Чтобы сделать это, щелкните на слове Default (По умолчанию) рядом со словом All (Все) в верхней части иерархии пакетов. После паузы (возможно, продолжительной) слово Default должно измениться на Install (Установить).

Если места на диске недостаточно или у вас медленное соединение с Интернетом, можете выбрать меньшее количество пакетов. Чтобы выбрать только инструменты разработки, щелкните на слове Default рядом со словом Devel. После паузы (возможно, продолжительной) слово Default должно измениться на Install. Для выбора еще меньшего набора пакетов раскройте список пакетов для разработки, щелкнув на пиктограмме + рядом со словом Devel. Выберите пакеты gcc-core, gcc-g++ и make, щелкнув на слове Skip (Пропустить) напротив каждого из этих пакетов, в результате чего это слово сменится на Install.

По окончании выбора пакетов нажмите на Finish (Готово). Когда программа установки завершит работу, директория установки Cygwin должна содержать файл cygwin.bat. Запуск этого сценария приведет к отображению оболочки Cygwin — среды с командной строкой, из которой можно запускать gcc, g++, ar, ranlib, dlltool, make и любые другие установленные вами утилиты. Процесс установки добавляет поддиректорию bin установки Cygwin в переменную среды окружения PATH, так что запускать эти утилиты можно также и из оболочки Windows cmd.exe. Однако вы увидите, что оболочка Cygwin — порт оболочки bash — гораздо удобнее для запуска утилит GNU.

Unix

Введя в командной строке g++ -v, проверьте, установлен ли в вашей системе GCC. Если GCC установлен и если доступна поддержка языка С++, эта команда должна напечатать сообщение, похожее на следующее.

Using built-in specs.

Target: powerpc-apple-darwin8

Configured with /private/var/tmp/gcc/gcc-5026.obj~19/src/configure

--disable-checking --prefix=/usr ...

Если GCC не установлен или если он установлен без поддержки С++, вы должны самостоятельно установить его. Обычно это сложный процесс, который зависит от вашей платформы. Среди прочего вам потребуется установить пакеты GNU make и GNU binutils. Подробные инструкции доступны по адресу gcc.gnu.org/install.

Если вы используете Mac OS X, то простейшим способом получения GCC является скачивание с Web-сайта Apple среды разработки Xcode и следование простым инструкциям ее установки. В настоящий момент Xcode доступен по адресу developer.apple.com/tools.

Если вы используете Linux, то какая-то версия GCC уже должна быть установлена. Чтобы проверить номер версии, введите g++ -v. Текущая версия GCC — это 4.0.0. Если ваша версия сильно устарела, используйте систему управления пакетами, применяемую в вашем дистрибутиве Linux, и установите наиболее новую.

Обсуждение

Cygwin и MinGW представляют очень разные подходы к портированию инструментов GNU в Windows. Cygwin — это амбициозный проект, стремящийся воспроизвести Unix-подобную среду, работающую под Windows. Он предоставляет уровень совместимости с Unix, что позволяет компилировать и выполнять под Windows программы, написанные для Unix. Следовательно, для Cygwin доступно огромное количество утилит Unix. Даже если вы не разрабатываете для Unix, вы, возможно, скоро станете считать, что вам необходимы инструменты Cygwin.

MinGW, что означает «Minimalist GNU for Windows» (минимальный GNU для Windows), предоставляет минимальную среду для сборки исполняемых файлов для Windows с помощью GCC. Среди других вещей MinGW включает порт GCC, порт архиватора и компоновщика GNU и порт отладчика GNU GDB. Он также включает MSYS — среду командной строки, способную выполнять make-файлы GNU и сценарии configure. MSYS будет обсуждаться в рецепте 1.14.

Одно из важных различий между Cygwin и MinGW относится к лицензированию. За некоторыми исключениями вы можете распространять двоичные файлы, скомпилированные с помощью порта MinGW GCC, под любой удобной вам лицензией. С другой стороны, двоичные файлы, собранные с помощью порта Cygwin GCC, по умолчанию подпадают под действие лицензии GNU General Public License (GPL). Если вы хотите распространять программы, скомпилированные в Cygwin, не делая их исходники открытыми, вы должны приобрести лицензию у Red Hat. За полным описанием обратитесь к Web-сайтам Cygwin и MinGW.

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*