Как скомпилировать несколько файлов gcc

Обновлено: 06.07.2024

Программисты обычно делят большие программы на C на отдельные модули (т. е. отдельные файлы .c) со связанными функциями. Определения, используемые более чем одним модулем, помещаются в файлы заголовков (файлы .h), которые включаются модулями, которым они нужны. Точно так же код библиотеки C также реализован в одном или нескольких модулях (файлы .c) и одном или нескольких файлах заголовков (файлы .h). Программисты на C часто реализуют свои собственные библиотеки C с часто используемыми функциями. При написании библиотеки программист реализует функциональность один раз в библиотеке, а затем может использовать эту функциональность в любой последующей написанной им программе на языке C.

В разделе Использование, компиляция и связывание библиотек мы описываем, как использовать, компилировать и связывать код библиотеки C с программами на C. В этом разделе мы обсудим, как писать и использовать собственные библиотеки на языке C. То, что мы представляем здесь, также применимо к структурированию и компиляции больших программ на языке C, состоящих из нескольких исходных файлов C и файлов заголовков.

Чтобы создать библиотеку на C:

Определите интерфейс библиотеки в файле заголовка ( .h ). Этот заголовочный файл должен быть включен любой программой, которая хочет использовать библиотеку.

Создайте реализацию библиотеки в одном или нескольких файлах .c. Этот набор определений функций реализует функциональность библиотеки. Некоторые функции могут быть функциями интерфейса, которые будут вызывать пользователи библиотеки, а другие могут быть внутренними функциями, которые не могут быть вызваны пользователями библиотеки (внутренние функции являются частью хорошей модульной конструкции реализации библиотеки).

Скомпилируйте двоичную форму библиотеки, которую можно связать с программами, использующими эту библиотеку.

Двоичная форма библиотеки может быть построена непосредственно из ее исходного файла (файлов) как часть компиляции кода приложения, использующего библиотеку. Этот метод компилирует файлы библиотеки в файлы .o и статически связывает их с двоичным исполняемым файлом. Такой способ включения библиотек часто применяется к коду библиотек, который вы пишете для собственного использования (поскольку у вас есть доступ к его исходным файлам .c), а также это метод сборки исполняемого файла из нескольких модулей .c.

Кроме того, библиотеку можно скомпилировать в двоичный архив ( .a ) или общий объектный файл ( .so ) для программ, которые хотят использовать библиотеку. В этих случаях пользователи библиотеки часто не будут иметь доступа к файлам исходного кода библиотеки на языке C и, таким образом, не смогут напрямую скомпилировать код библиотеки с кодом приложения, которое его использует. Когда программа использует такую ​​предварительно скомпилированную библиотеку (например, .a или .so ), код библиотеки должен быть явно связан с исполняемым файлом с помощью параметра командной строки gcc -l.

В подробном обсуждении написания, компиляции и связывания кода библиотеки мы сосредоточимся на случае, когда у программиста есть доступ к отдельным модулям библиотеки (либо к файлам .c, либо к файлам .o). Этот фокус также относится к проектированию и компиляции больших программ на C, которые разделены на несколько файлов .c и .h. Мы кратко покажем команды для создания архивных и разделяемых объектных форм библиотек. Дополнительную информацию о создании этих типов файлов библиотек можно найти в документации по gcc, включая справочные страницы для gcc и ar .

Сведения о библиотеке на примере

Далее мы покажем несколько примеров создания и использования ваших собственных библиотек.

Определите интерфейс библиотеки:

Файлы заголовков (файл .h) — это текстовые файлы, которые содержат прототипы функций C и другие определения — они представляют интерфейс библиотеки. Файл заголовка должен быть включен в любое приложение, которое намеревается использовать библиотеку. Например, файлы заголовков стандартной библиотеки C обычно хранятся в /usr/include/ и могут быть просмотрены с помощью редактора:

Вот пример файла заголовка ( mylib.h ) из библиотеки, который содержит некоторые определения для пользователей библиотеки.

Файлы заголовков обычно содержат специальный "шаблонный" код:

Этот шаблонный код гарантирует, что препроцессор компилятора включит содержимое mylib.h только один раз в любой файл C, который его включает. Важно включать содержимое файла .h только один раз, чтобы избежать дублирования ошибок определения во время компиляции. Точно так же, если вы забудете включить файл .h в программу на C, которая использует библиотеку, компилятор выдаст предупреждение о неопределенном символе.

Комментарии в файле .h являются частью интерфейса библиотеки, написанного для пользователей библиотеки. Эти комментарии должны быть подробными, объясняющими определения и описывающими, что делает каждая библиотечная функция, какие значения параметров она принимает и что она возвращает. Иногда файл .h также включает комментарий верхнего уровня, описывающий, как использовать библиотеку.

Ключевое слово extern перед определением глобальной переменной и прототипом функции означает, что эти имена определены где-то еще.Особенно важно включать extern перед любыми глобальными переменными, экспортируемыми библиотекой, так как это отличает определение имени и типа (в файле .h) от объявления переменной в реализации библиотеки. В предыдущем примере глобальная переменная объявляется внутри библиотеки ровно один раз, но она экспортируется пользователям библиотеки через ее внешнее определение в файле .h библиотеки.

Реализовать функциональность библиотеки:

Программисты реализуют библиотеки в одном или нескольких файлах .c (а иногда и во внутренних файлах .h). Реализация включает определения всех прототипов функций в файле .h, а также другие функции, которые являются внутренними для ее реализации. Эти внутренние функции часто определяются с помощью ключевого слова static, которое ограничивает их доступность модулем (файл .c), в котором они определены. Реализация библиотеки также должна включать определения переменных для любых объявлений внешних глобальных переменных в файле .h. Вот пример реализации библиотеки ( mylib.c ):

Создайте бинарную форму библиотеки:

Чтобы создать двоичную форму библиотеки (файл .o), скомпилируйте с параметром -c:

Один или несколько файлов .o могут создать архивную ( .a ) или общую объектную ( .so ) версию библиотеки.

Для сборки статической библиотеки используйте архиватор ( ar ):

Чтобы создать динамически подключаемую библиотеку, объектный файл(ы) mylib.o в библиотеке должен быть построен с использованием независимого от позиции кода (используя -fPIC ). Общий объектный файл libmylib.so можно создать из mylib.o, указав флаг -shared для gcc:

Общие библиотеки объектов и архивов часто создаются, например, из нескольких файлов .o (помните, что .o для динамически подключаемых библиотек необходимо создавать с использованием флага -fPIC):

Использовать и связать библиотеку:

В других файлах .c, использующих эту библиотеку:

явно ссылаться на реализацию (файл .o) во время компиляции.

После включения файла заголовка библиотеки ваш код может вызывать функции библиотеки (например, в myprog.c ):

Когда файл mylib.h включен в двойные кавычки, препроцессор сначала ищет файл mylib.h в текущем каталоге, а затем в других местах, которые вы должны явно указать ему для поиска, указав путь включения ( -I ) в gcc. Например, если заголовочный файл находится в каталоге /home/me/myincludes (а не в том же каталоге, что и файл myprog.c), то путь к этому каталогу должен быть указан в командной строке gcc, чтобы препроцессор мог найдите файл mylib.h:

Чтобы скомпилировать программу ( myprog.c ), использующую библиотеку ( mylib.o ), в двоичный исполняемый файл:

Или, если файлы реализации библиотеки доступны во время компиляции, то программу можно собрать непосредственно из файлов программы и библиотеки .c:

Или, если библиотека доступна в виде архива или общего объектного файла, ее можно связать с помощью -l , ( -lmylib : обратите внимание, что имя библиотеки libmylib.[a,so] , но только mylib часть включена в командную строку gcc):

-Л. option указывает путь к файлам libmylib.[so,a] (. после -L указывает, что поиск должен выполняться в текущем каталоге). По умолчанию gcc будет динамически связывать библиотеку, если сможет найти версию .so. Дополнительную информацию о связывании и путях связывания см. в разделе Использование библиотек C.

Затем программу можно запустить:

Если вы запустите версию myprog с динамической компоновкой, вы можете столкнуться с ошибкой, которая выглядит следующим образом:

Эта ошибка говорит о том, что компоновщик времени выполнения не может найти libmylib.so во время выполнения. Чтобы решить эту проблему, задайте для переменной среды LD_LIBRARY_PATH путь к файлу libmylib.so. Последующие запуски myprog используют путь, который вы добавляете в LD_LIBRARY_PATH, чтобы найти файл libmylib.so и загрузить его во время выполнения. Например, если libmylib.so находится в подкаталоге /home/me/mylibs/, запустите это (только один раз) в приглашении оболочки bash, чтобы установить переменную среды LD_LIBRARY_PATH:

Авторское право (C) 2020 Dive into Systems, LLC.

Dive into Systems находится под лицензией Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0).

Ezoic

сообщить об этом объявлении

Ezoic

сообщить об этом объявлении

Ezoic

сообщить об этом объявлении

2.3 Компиляция нескольких исходных файлов

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

В следующем примере мы разделим программу Hello World на три файла: 'main.c', 'hello_fn.c' и заголовочный файл 'hello.h'. Вот основная программа 'main.c':

Исходный вызов системной функции printf в предыдущей программе 'hello.c' был заменен вызовом новой внешней функции hello , которую мы определим в отдельном файле 'hello_fn.c'.

Основная программа также включает заголовочный файл 'hello.h', который будет содержать объявление функции hello . Объявление используется для обеспечения правильного соответствия типов аргументов и возвращаемого значения между вызовом функции и определением функции. Нам больше не нужно включать системный заголовочный файл 'stdio.h' в 'main.c' для объявления функции printf, поскольку файл 'main. c' не вызывает printf напрямую.

Объявление в 'hello.h' представляет собой одну строку, определяющую прототип функции hello :

Определение самой функции hello содержится в файле 'hello_fn.c':

Эта функция выводит сообщение "Здравствуйте, имя!", используя свой аргумент в качестве значения имени.

Чтобы скомпилировать эти исходные файлы с помощью gcc, используйте следующую команду:

Чтобы запустить программу, введите путь к исполняемому файлу:

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

Ezoic


сообщить об этом объявлении

  1. Скомпилируйте файл «.c», содержащий исходный код, с помощью такой команды, как. gcc -Wall -g -c hello.c.
  2. Связать файл «.o», чтобы создать исполняемый файл, с такой командой, как. gcc -o привет привет.о -lm.
  3. Запустите исполняемый файл обычным способом.

Как скомпилировать несколько файлов одновременно?

Скажем, вы пишете программу с названием simple :

Как скомпилировать несколько файлов C в блоки кода?

Для этого щелкните правой кнопкой мыши Исходные файлы в обозревателе решений, выберите Добавить > Существующий элемент, а затем выберите свой файл. Теперь, когда вы компилируете свою программу, вы должны увидеть, как компилятор перечисляет имя вашего файла по мере его компиляции. В Code::Blocks перейдите в меню «Файл» и выберите «Создать» > «Файл…».

Как мне скомпилировать программу переменного тока с помощью Makefile?

Сможете ли вы это сделать? Компиляция программ C в Linux с помощью команды Make

  1. Создайте Makefile для простой компиляции.
  2. Создайте Makefile для компиляции нескольких файлов.
  3. Добавить цель для процесса очистки.
  4. Обработка переменных в Makefile.
  5. Дальнейшее упрощение Makefile.
  6. Вставить отладочные сообщения в Makefile.

Во что компилируется C?

C обычно компилируется на ассемблере просто потому, что это облегчает жизнь бедному разработчику компилятора. Ассемблерный код всегда ассемблируется (а не «компилируется») в перемещаемый объектный код. Вы можете думать об этом как о двоичном машинном коде и двоичных данных, но с большим количеством украшений и метаданных.

Как мне скомпилировать C++ 11 с G++?

  1. В новейшей версии вместо этого, вероятно, придется использовать -std=c++11.
  2. Это упускает много контекста.
  3. @classdaknok_t: оба должны быть разрешены, также Ubuntu 12.04 по умолчанию поставляет g++-4.6 (который поддерживает только -std=c++0x ) KillianDS 28 апр. 2012, в 12:57.
  4. Добавьте флаги сразу после g++ , например. g++ -std=c++0x _filename_ && ./a.out . –

Что такое Fpermissive C++?

Флаг -fpermissive заставляет компилятор сообщать о некоторых вещах, которые на самом деле являются ошибками (но разрешены некоторыми компиляторами), в виде предупреждений, чтобы разрешить компиляцию кода, даже если он не соответствует правилам языка. Таким образом, использование -fpermissive позволит скомпилировать некоторый несоответствующий код.

Является ли G++C++11?

C++11 — это не компилятор, а стандарт ISO, реализованный рядом популярных компиляторов. Компилятором C++ по умолчанию в Ubuntu является g++ из коллекции компиляторов GNU. Как вы упомянули в своем вопросе, флаг -std=c++11 включает функции C++11 в g++, а также Clang, еще один компилятор C++, доступный в Ubuntu.

Поддерживает ли G++ 4.8 5 C++ 11?

Статус экспериментальной поддержки C++11 в GCC 4.8 GCC обеспечивает экспериментальную поддержку стандарта ISO C++ 2011 года. Эту поддержку можно включить с помощью параметров компилятора -std=c++11 или -std=gnu++11; первый отключает расширения GNU.

Как включить C++ 17 в G++?

Функции C++17 доступны, начиная с GCC 5. Этот режим используется по умолчанию в GCC 11; его можно явно выбрать с помощью флага командной строки -std=c++17 или -std=gnu++17, чтобы также включить расширения GNU.

Что такое полная форма GCC?

Совет сотрудничества стран Персидского залива (GCC), политический и экономический союз шести стран Ближнего Востока — Саудовской Аравии, Кувейта, Объединенных Арабских Эмиратов, Катара, Бахрейна и Омана. …

Что означает GCC в тексте?

аббревиатура Совета сотрудничества стран Персидского залива: группа из шести стран Персидского залива: Бахрейн, Кувейт, Катар, Оман, Саудовская Аравия и Объединенные Арабские Эмираты. Страны ССАГПЗ совместно принимают решения о торговле, военных расходах и т. д.

Для чего используется GCC?

GCC означает коллекции компиляторов GNU, которые используются для компиляции в основном языков C и C++. Его также можно использовать для компиляции Objective C и Objective C++.

Является ли G++ компилятором?

G++ — это компилятор, а не просто препроцессор. G++ создает объектный код непосредственно из исходного кода вашей программы на C++. Промежуточной версии программы на C не существует.

В чем разница между GCC и MinGW?

MinGW означает «Минималистский GNU для Windows». По сути, это набор инструментов, который включает некоторое программное обеспечение GNU, в том числе порт GCC. Таким образом, MinGW содержит GCC, который входит в набор свободного программного обеспечения GNU.

Оглавление

Как скомпилировать и запустить несколько файлов C в GCC?

Не надо больше удивляться, я покажу вам все простые шаги, чтобы связать ваши собственные исходные файлы C-Program.

  1. Шаг 1. Создайте два исходных файла C-программы.
  2. Шаг 2. Сохраните оба файла в одном месте.
  3. Шаг 3. Откройте командную строку и выполните эти команды.
  4. Шаг 4. Готово!
  5. Шаг 0. Установите компилятор C-программы (gcc)

Можете ли вы использовать GCC для связывания объектных файлов C?

По умолчанию, когда gcc получает исходный код в качестве входных данных, он пытается скомпилировать каждый из них, а затем связать их все вместе. Как отмечалось в других ответах, можно использовать флаги, чтобы указать gcc сначала просто скомпилировать, а затем использовать объектные файлы для компоновки на отдельном шаге.

Как мне скомпилировать программу C с помощью компилятора GCC?

Как скомпилировать программу C

  1. Используйте редактор vim. Откройте файл с помощью,
  2. vim-файл. c (имя файла может быть любым, но оно должно заканчиваться точкой с расширением).
  3. Нажмите i, чтобы перейти в режим вставки. Введите свою программу.
  4. Нажмите кнопку Esc, а затем введите :wq. Это сохранит файл.
  5. файл gcc.c.
  6. 6. ./
  7. На вкладке "Файл" нажмите "Создать".
  8. На вкладке "Выполнение"

Как мне объединить два файла C?

Ниже приведены шаги для слияния.

  1. Открыть файл1. txt и файл2. txt в режиме чтения.
  2. Открыть файл3. txt в режиме записи.
  3. Запустить цикл для поочередного копирования символов из файла1. txt в файл3. текст.
  4. Запустить цикл для поочередного копирования символов из файла2. txt в файл3. текст.
  5. Закрыть все файлы.

Какая программа вызывает GCC?

Обычный способ запустить GCC — запустить исполняемый файл с именем gcc, или machine-gcc при кросс-компиляции, или machine-gcc-version для запуска определенной версии GCC. Когда вы компилируете программы на C++, вы должны вместо этого вызывать GCC как g++. Программа gcc принимает параметры и имена файлов в качестве операндов.

Как передать параметры компоновщика в GCC?

Передать параметр компоновщику как вариант. Вы можете использовать это для предоставления системных опций компоновщика, которые GCC не распознает. Если вы хотите передать параметр, который принимает отдельный аргумент, вы должны использовать -Xlinker дважды, один раз для параметра и один раз для аргумента.

Включает ли GCC компоновщик?

Команда gcc (или g++ ) — это просто драйвер. Он запускает другие программы, включая собственно компилятор (cc1 для кода C, cc1plus для кода C++), ассемблер и компоновщик. Какие программы запускаются, определяется спецификационным файлом (есть и неявный файл, см. параметр разработчика -dumpspecs).

Какова полная форма компилятора GCC?

Что такое полная форма GCC. GCC: Сборник компиляторов GNU. GCC означает сборник компиляторов GNU. Это система компилятора, поддерживающая различные языки программирования. Он сыграл важную роль в развитии бесплатного программного обеспечения как инструмента и как примера.

Как мне скомпилировать программу C в Windows?

Откройте блокнот. Нажмите кнопку Windows и введите в нее блокнот. Введите исходный код C в блокноте. На данный момент не заботьтесь о том, что вы печатаете, просто скопируйте и вставьте исходный код. Нажмите «Файл» → «Сохранить как» в строке меню. Либо нажмите Ctrl + S, чтобы открыть диалоговое окно «Сохранить как». Дайте имя вашей первой программе на C. Добавьте расширение .c в конце имени файла.

Что такое GCC в программировании на C?

Примечание. GCC (GNU Compiler Collection) — это компилятор, используемый для компиляции программ на языках C и C++. GCC - это просто компилятор. Это не IDE (интегрированная среда разработки), такая как Turbo C++, Borland C++ и Dev C++. Мы должны использовать командную строку окна для компиляции и выполнения программ C и C++.

Отдельное руководство по компиляции

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

До сих пор всякий раз, когда вы хотели скомпилировать программу, вы компилировали файл, отображаемый в буфере Emacs. Скомпилировать этот файл. Опция меню компиляции Emacs (или, что то же самое, M-x compile ) является удобной функцией, когда вся ваша программа содержится в одном файле. Конечно, можно скомпилировать файл полностью независимо от Emacs.

Загрузить hello.c . Это простая программа, которая выводит ``Hello world'', и вы можете скомпилировать и запустить ее, даже не отображая ее в Emacs. Чтобы скомпилировать его, перейдите в окно Unix Shell, подключитесь к каталогу, в который вы загрузили программу, и введите следующую команду:

Эта команда приведет к созданию нового файла. Используйте команду ls, чтобы отобразить ваш каталог. Какого файла не было раньше?

На данный момент у вас еще нет исполняемой программы, которую вы можете запустить. Следующим шагом является связывание объектного файла для создания такого исполняемого файла. Для этого введите в окно UNIX Shell следующее:

Связывание связывает ваш скомпилированный код с некоторым дополнительным кодом, специфичным для C. Еще раз, новый файл был создан в вашем каталоге. Перечислите каталог. Какой новый файл вы нашли?

Теперь, когда у вас есть исполняемый файл, вы можете запустить его обычным способом. Просто введите «hello» в окно UNIX Shell.

<ПР> Скомпилируйте файл ``.c'', содержащий исходный код, с помощью такой команды, как

Если вся ваша программа содержится в одном файле, вы можете выполнить компиляцию и компоновку за один шаг, введя команду

Это именно то, что делает Emacs, когда компилирует для вас программу. До сих пор мы старались выполнять компиляцию в два отдельных этапа, чтобы вы могли работать с программами, состоящими из более чем одного файла. Мы подробнее рассмотрим эту тему в следующем разделе.

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

Попробуйте придумать несколько причин, почему это может быть хорошей идеей.

Теперь давайте посмотрим на программу, разделенную на несколько файлов. Загрузите main.c и help.c и просмотрите их в Emacs. Обратите внимание, что main.c использует две функции, определенные в ``help.c''.

Есть ли способ скомпилировать эту программу из Emacs? Попробуйте скомпилировать ``main.c'' таким образом. Что происходит?

Теперь попробуйте скомпилировать буфер, содержащий ``help.c''. Что происходит?

Основываясь на том, что вы уже знаете, какой, по вашему мнению, будет процедура компиляции, компоновки и запуска программы, которую мы разместили здесь в двух файлах? Подумайте хорошенько, прежде чем смотреть на ответ.

Теперь сделайте это сами. Скомпилируйте, свяжите и запустите программу.

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

Скомпилируйте, свяжите и запустите измененную программу. (Не забудьте перед этим сохранить ``main.c''!)

Проблема остается. Всякий раз, когда вы компилируете ``main.c'', компилятор жалуется, что ``sum'' и ``product'' являются необъявленными функциями. Даже в этом случае компоновщику удается собрать исполняемый файл. Зачем нам беспокоиться о предупреждении компилятора, если мы все равно можем получить исполняемую программу?

На самом деле решить эту проблему не так уж и сложно. Просто добавьте следующие две строки в ``main.c'' над основной процедурой.

Где вы видели эти строки раньше?

Сохраните ``main.c'' и перестройте исполняемый файл. Если вы все сделали правильно, ошибки должны исчезнуть.

Это неуклюжий способ объявления функций, реализованных в отдельном файле. Можете ли вы придумать какие-нибудь проблемы?

Вот как мы можем решить обе эти проблемы. Создайте новый файл, который не содержит ничего, кроме объявлений функций в ``help.c''. Собственно, такой файл мы уже создали: скачайте help.h и посмотрите на него. Что там помимо деклараций?

Теперь измените ``main.c'', удалив объявления, которые вы добавили, и заменив их строкой

Как вы, вероятно, помните, это указание компилятору вести себя так, как если бы содержимое файла ``help.h'' действительно было введено здесь. Обратите внимание, что мы заключили имя файла в кавычки, а не в угловые скобки, как, например, в случае с stdio.h. Почему?

Сохраните ``main.c'', скомпилируйте, свяжите и запустите его.Как это решает проблему (1), указанную выше?

Однако мы до сих пор не решили проблему (2). Ничто не мешает нам изменить объявления в ``help.h'', сделав его несовместимым с ``help.c''.

К счастью, есть способ решить и эту проблему. Поместите строку

в верхней части ``help.c''. Теперь сохраните ``help.c'' и пересоберите исполняемый файл. Вы не должны столкнуться с ошибками.

Теперь снова отредактируйте ``help.c'', изменив одно из объявлений. Например, измените ``сумму'' так, чтобы она принимала в качестве аргумента число с плавающей запятой, а не целое число. Сохраните и перекомпилируйте ``help.c''. Что происходит?

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

<ПР>

  • Для каждого файла ``file.c'', содержащего функции, которые будут использоваться в другом месте, создайте файл ``file.h'', содержащий информацию заголовка и комментарии для этих функций.
  • Поставить линию

    в начале всех файлов, использующих функции из ``file.c''. Таким образом, компилятор предупредит вас, если вы неправильно используете функции.

    Затем вы можете отдельно скомпилировать файлы ``.c'', а затем скомпоновать их вместе для создания исполняемого файла. В следующем уроке мы рассмотрим файлы Makefile, которые обеспечивают более удобный способ компиляции и компоновки программ с несколькими файлами.

    Чтобы исследовать компиляцию программ с несколькими исходными файлами и использование файлов заголовков:
    Если функция программы размещена в разных программах, это должна быть инструкция постоянного определения, доступная для каждого файла:
    Определите * * *. H-файл для хранения прототипов функций и определений констант
    Добавьте «* *». H «к файлам, которые будут скомпилированы вместе

    Этапы компиляции:

    <р>1. Создайте новый пустой проект C

    DEV-C++ компиляция нескольких файлов C или C++ одновременно время

    <р>2. Добавьте файлы для компиляции в указанный выше новый проект

    DEV-C++ компиляция нескольких файлов C или C++ одновременно время

    <р>3. Просто скомпилируйте и запустите, то же самое с C++

    Принцип многофайловой компиляции C/C++

    В случае одного файла (только один .H и .C/.CPP) нам нужно только скомпилировать файл, например:

    Но в большинстве случаев проект необходимо разделить на несколько исходных файлов, таких как main. C, A.C, B.C и т.д. Как компилировать в этом случае? Во-первых, метод в a.c должен быть вызван в main.c. Заголовочный файл A.H должен быть включен. Объявление функции в заголовочном файле обеспечивает корректность вызова функции main.c. Теперь давайте выполним команду компиляции нескольких файлов:

    Весь результат компиляции выглядит следующим образом: сначала компилятор компилирует исходный файл, как показано в файле main. C A.C B.C main.obj a. Obj b.obj целевой файл, а затем связать методы функции, которые будут использоваться. main.obj Наконец, он упакован в исполняемый файл main, что является принципом разделения компиляции и компоновки.

    Как скомпилировать проект, состоящий из нескольких исходных файлов C++

    Когда я пишу задания структуры данных, поскольку я пишу некоторые структуры данных, которые необходимо использовать, исходные файлы следующие:
    Main.cpp, Stack.cpp, Stack.h, Queue.cpp, Queue .h
    Но когда я пишу исходный файл в среде IDE и хочу скомпилировать его самостоятельно, я обнаруживаю, что не могу обрабатывать несколько исходных файлов. Найдя данные, у меня есть следующие решения:

    <р>1. Одновременно компилировать несколько исходных файлов в одном операторе

    g++ -Wall -g Main.cpp Stack.cpp Queue.cpp -o StackOut

    Создать исполняемый стек

    В компиляторе G + + – wall – это параметр, разрешающий все полезные предупреждения, которые может предоставить GCC; программа. Конкретное использование каждого параметра подробно описано здесь и здесь.

    <р>2. Скомпилируйте несколько исходных файлов по отдельности

    При компиляции одного файла я пробовал. Порядок произвольный. Если я изменю Stack.cpp , то:

    g++ -Wall -g -c Stack.cpp
    g++ -g Stack.o Queue.o Main.o -o StackOut

    <р>3. Написать make-файл

    В этой статье о том, как одновременно компилировать несколько файлов C или C++ с помощью DEV-C++, рассказывается об этом. Дополнительные сведения о компиляции нескольких файлов C или C++ см. в предыдущих статьях на сайте developmentepaer или продолжайте просматривать следующие статьи. Я надеюсь, что вы сможете поддержать разработчиков в будущем!

    Читайте также: