Помогите начинающему Linux-программеру, пожалуйста!
Каким образом производится компиляция многомодульных программ из командной строки? Язык - С++.
Компиляция (Многомодульные программы)
Модератор: Модераторы разделов
-
Ballantre
- Сообщения: 114
- ОС: Linux
Компиляция
Я двадцать лет знал его и всегда ненавидел, и всегда восхищался, и всегда по-рабски боялся его.
-
Zeus
- Сообщения: 694
Re: Компиляция
Из командной строки: по частям.
Каждый модуль компилируешь с опцией "только компиляция (без линковки)". У g++ это флаг -с
Когда все модули скомпилированы в объектные файлы (*.o), проект можно собирать в исполняемый файл (или библиотеку - смотря что компилишь).
Но лучше прописать всё это в makefile - так удобнее.
Каждый модуль компилируешь с опцией "только компиляция (без линковки)". У g++ это флаг -с
Когда все модули скомпилированы в объектные файлы (*.o), проект можно собирать в исполняемый файл (или библиотеку - смотря что компилишь).
Но лучше прописать всё это в makefile - так удобнее.
-
serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
Re: Компиляция
Помогаем начинающему программеру вообще: 
g++ -c *.cpp
g++ -o mybin *.o
g++ -c *.cpp
g++ -o mybin *.o
-
Ballantre
- Сообщения: 114
- ОС: Linux
Re: Компиляция
Спасибо, товарищи, что так быстро откликнулись! Дело в том, что совсем недавно перешел на нормальную ОСь с проклятого мастдая. Поэтому в линковке, честно говоря, не ахти.
Мой основной вопрос в следующем: пусть у нас есть n заголовочных файлов и, например, n+1 cpp-файлов. Тогда мы создаем объектные файлы для каждого cpp, а потом все эти объектные одной строкой в исполняемый, или как?
Мой основной вопрос в следующем: пусть у нас есть n заголовочных файлов и, например, n+1 cpp-файлов. Тогда мы создаем объектные файлы для каждого cpp, а потом все эти объектные одной строкой в исполняемый, или как?
Я двадцать лет знал его и всегда ненавидел, и всегда восхищался, и всегда по-рабски боялся его.
-
serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
Re: Компиляция
Чтобы не делать поспешных выводов - для начала рекомендуется к прочтению это http://linuxforum.ru/index.php?showtopic=26542
Да.
-
Ballantre
- Сообщения: 114
- ОС: Linux
Re: Компиляция
Спасибо!
Я двадцать лет знал его и всегда ненавидел, и всегда восхищался, и всегда по-рабски боялся его.
-
powerfox
- Сообщения: 458
Re: Компиляция
(Ballantre @ Oct 9 2006, в 22:28) писал(а):Каким образом производится компиляция многомодульных программ
(Zeus @ Oct 9 2006, в 22:38) писал(а):Каждый модуль сомпилируешь с опцией "только компиляция (без линковки)"
Вообще, начинающий программист должен владеть терминологией: С++ не является модульным языком, а объектный файл != модуль.
-
ety
- Сообщения: 358
- ОС: Linux
Re: Компиляция
powerfox писал(а): ↑09.10.2006 23:55(Ballantre @ Oct 9 2006, в 22:28) писал(а):
Каким образом производится компиляция многомодульных программ
(Zeus @ Oct 9 2006, в 22:38) писал(а):Каждый модуль сомпилируешь с опцией "только компиляция (без линковки)"
Вообще, начинающий программист должен владеть терминологией: С++ не является модульным языком, а объектный файл != модуль.
не совсем (на C++ можно кодировать в модульном стиле юзая namespaces, а на чистом Си префиксы) вот тут лекция по CS:
http://www.ergeal.ru/archive/cs/tp/07.htm
допустим, я сейчас работаю с машинным кодом: у меня сырец x86dis.cpp переводящий одну бинарную инструкцию в символьное представление (с которым просто работать), и его интерфэйс x86dis.h - вмести они образают модуль, который используется в dis.c (дизассемблер), и dcc.c (декомпилер), которые так-же юзают еще и модули elf.h/elf.c, pe.c/pe.h, и getopt из стандартной библиотеки. компилируется это все одним Makefile с целями dis и dcc, причем каждая из целей юзает обьектный фаил x86dis.o.
так что "модуль" это более общее (абстрактное) понятие, нежели объектный фаил или привзяка функций к одному нэйм-спэйсу.
Образование - это вовсе не то, чему человека учили, а то, чему он научился.
-----
Время, необходимое на компиляцию пакета обратно пропорционально его полезности и важности его наличия в системе.
-----
Время, необходимое на компиляцию пакета обратно пропорционально его полезности и важности его наличия в системе.
-
Zeus
- Сообщения: 694
-
polachok
- Бывший модератор
- Сообщения: 2199
- Статус: главный форумный маргинал
- ОС: gnu/linux
-
serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu