16 / 4 / 4
Регистрация: 19.09.2012
Сообщений: 107
|
||||||||||||||||
1 | ||||||||||||||||
Как скомпилировать несколько файлов через консоль g++29.01.2015, 02:29. Показов 42564. Ответов 6
Метки нет (Все метки)
Возможно заезженная тема, но не получается собрать несколько файлов в один. Что пишет гугл, не помогает, 5-й час проблему ищу. Напишу оч. простенький пример, сама суть как скомпилировать? Пользуюсь Ubuntu 14.04. Есть 3 файла:
class.h
g++ first.cpp -o first если больше файлов, уже не получается, даже по отдельности. куча ошибок выдает.
1
|
29.01.2015, 02:29 | |
Ответы с готовыми решениями:
6
Как скомпилировать программу написанную на Паскаль через консоль? Как скомпилировать несколько папок и файлов в EXE? Как скомпилировать несколько .py файлов в один .exe? Как скомпилировать несколько файлов Python в один exe? |
18 / 18 / 6
Регистрация: 02.07.2011
Сообщений: 67
|
||||||
29.01.2015, 04:00 | 2 | |||||
Создание исполняемого файла проходит в два этапа: компиляция и компоновка. g++ позволяет запустить этот процесс в одну строчку. Во время компиляции работает компилятор и генерирует объектные файлы. Здесь главное, чтоб все используемые функции были вами объявлены, но необязательно определены. В местах вызова функций компилятор оставляет пометки для компоновщика: "Здесь идёт вызов такой-то функции. В одном из объектных файлов она есть". Компиляция cpp-файлов идёт по одному, независимо от других. В итоге объектные файлы состоят из блоков исполняемого кода с пометками для компоновщика.
Компоновщик объединяет объектные файлы в исполняемый. В местах пометок правильно расставляются адреса, по которым можно вызвать нужную функцию. Так всё работает упрощённо в моём понимании)) Насчёт ваших файлов. В main.cpp в первой строчке должно быть:
Код
g++ main.cpp opis.cpp -o first Так как сейчас в main.cpp компилятор находит класс book, который нигде не определён. Неизвестно, например, есть ли у него конструктор без аргументов.
1
|
Диссидент
27707 / 17325 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
|
|
29.01.2015, 09:06 | 3 |
Сообщение было отмечено S_kepti_k как решение
Решение
S_kepti_k,В дополнение в вышесказанному.
Если все cpp-файлы проекта в одной папке и других нет Код
g++ *.cpp -o first Код
g++ -c opis.cpp А когда все модули уже скомпилированы, их можно собрать в кучку Код
g++ *.o -o first
1
|
16 / 4 / 4
Регистрация: 19.09.2012
Сообщений: 107
|
|||||||||||
29.01.2015, 17:45 [ТС] | 4 | ||||||||||
andreysv Добавил
0
|
16 / 4 / 4
Регистрация: 19.09.2012
Сообщений: 107
|
|
29.01.2015, 17:47 [ТС] | 5 |
0
|
18 / 18 / 6
Регистрация: 02.07.2011
Сообщений: 67
|
||||||
29.01.2015, 18:11 | 6 | |||||
Сообщение было отмечено S_kepti_k как решение
Решение
Здесь работает как надо с файлом opis.cpp.
Warning - не ошибка, а предупреждение. Написано, что вы пишете по стандарту c++11 в некоторых местах. В своём ответе забыл добавить, что первую строчку нужно не добавить, а заменить. main.cpp:
1
|
16 / 4 / 4
Регистрация: 19.09.2012
Сообщений: 107
|
|
29.01.2015, 18:43 [ТС] | 7 |
andreysv Спасибо, помогло - работает
1
|
29.01.2015, 18:43 | |
29.01.2015, 18:43 | |
Помогаю со студенческими работами здесь
7
Как разбить escript на несколько файлов и скомпилировать в один? Как скомпилировать несколько исходных файлов в исполняемый модуль в командной строке Visual Studio? Скомпилировать, скомпоновать и запустить проект на Qt через консоль Windows Как скомпилировать программу через терминал состоящую из трёх файлов исходного кода? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |