реклама на сайте
подробности

 
 
> Порядок компиляции файлов
sergey sva
сообщение Mar 3 2009, 17:28
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Для компиляции исходников используется маке файл в gcc, Во время написания маке файла возник
вопрос, в каком порядке лучше компилировать файлы?, попробовал очередность поменял ошибок нет,
в сети поискал, не чего нужного не нашел, может есть какие рекомендации ?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ARV
сообщение Mar 4 2009, 05:24
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Цитата(zltigo @ Mar 3 2009, 23:25) *
АБСОЛЮТНО безразлично.
а позволю себе вопрос: вот у компоновщика есть опция relax - когда он пытается заменить дальние джампы и вызовы подпрограмм короткими... и вот в случае, если из-за порядка сборки отельные секции расположатся рядом - этот этап даст существенный эффект, т.к. много "перекрестных" вызовов заменится на короткие, а если они окажутся далеко друг от друга - эффекта не будет. или компоновщик более интеллектуальный и тасует секции (если можно, конечно) уже после компиляции сам?
вообще, есть смысл в моих размышлениях или они надуманы?


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Mar 4 2009, 05:48
Сообщение #3


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(ARV @ Mar 4 2009, 08:24) *
или компоновщик более интеллектуальный и тасует секции (если можно, конечно) уже после компиляции сам?
вообще, есть смысл в моих размышлениях или они надуманы?

есть такая опция -shared, которая позволяет видеть компилятору все исходники одновременно, что позволяет максимально оптимизировать код.
По-моему, так.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
ReAl
сообщение Mar 4 2009, 23:39
Сообщение #4


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(MrYuran @ Mar 4 2009, 07:48) *
есть такая опция -shared, которая позволяет видеть компилятору все исходники одновременно, что позволяет максимально оптимизировать код. По-моему, так.

--combine --whole-program
combine для того, чтобы все перечисленные в командной строе исходники собрать в один объектник (сначала объединив в один исходник) а whole-program - чтобы рассматривал это как уже законченную программу. Благодаря этому неиспользуемые функции выбрасываются ещё не доходя до --gc-sections, мелкие функции "из другого файла" инлайнятся по месту и их отдельное тело выбрасывается (раз это уже вся программа, значит снаружи никто не вызовет) и т.д.
Вот только некоторые проблемы возникают, если в проекте есть асм-файл и он вызывет что-то из С-файла. С точки зрения собранных в кучу С-файлов та функция не вызывается вообще, поэтому она выбрасывается из файла а_тут_собраны_все_с.o и не находится при линковке.
Должно лечиться атрибутами used и externally_visible для той С-функции, которая вызывается из асм-файла, но пока не проверял, не очень зудит таким путём пытаться ещё уменьшить размер бинарника.

Да, аналогичная беда должна возникать при миксе С и С++, лучше и чисто-С-шные вещи тоже обрабатывать как С++, чтобы пошло на вход одного компилятора.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
ARV
сообщение Mar 5 2009, 10:07
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Цитата(ReAl @ Mar 5 2009, 02:39) *
--combine --whole-program
combine для того, чтобы все перечисленные в командной строе исходники собрать в один объектник (сначала объединив в один исходник) а whole-program - чтобы рассматривал это как уже законченную программу.
не знаю, как на счет выбрасывания лишних функций (нет у меня пока таких), но вот инлайнинг функций из разных файлов не прокатывает с этими опциями... специально вынес содержимое главного цикла main() в другой файл в виде функции: увы, rcall как был, так и остался...

или я чего-то недопонял и недоделал?


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Mar 5 2009, 10:44
Сообщение #6


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(ARV @ Mar 5 2009, 13:07) *
но вот инлайнинг функций из разных файлов не прокатывает с этими опциями...

Так его и не будет. Из разных модулей проинлайнить что-либо невозможно.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- sergey sva   Порядок компиляции файлов   Mar 3 2009, 17:28
- - zltigo   Цитата(sergey sva @ Mar 3 2009, 20:28) Во...   Mar 3 2009, 20:25
||- - ARV   Цитата(MrYuran @ Mar 4 2009, 08:48) есть ...   Mar 4 2009, 07:18
||- - ReAl   Цитата(ARV @ Mar 5 2009, 12:07) не знаю, ...   Mar 9 2009, 20:05
|- - gotty   Цитата(ARV @ Mar 4 2009, 07:24) или компо...   Mar 4 2009, 07:07
|- - zltigo   Цитата(ARV @ Mar 4 2009, 08:24) а позволю...   Mar 4 2009, 07:59
|- - ARV   Цитата(zltigo @ Mar 4 2009, 10:59) Позвол...   Mar 4 2009, 08:27
|- - Сергей Борщ   Цитата(ARV @ Mar 4 2009, 09:18) ладно, ес...   Mar 4 2009, 09:10
|- - ARV   Цитата(Сергей Борщ @ Mar 4 2009, 12:10) П...   Mar 4 2009, 10:24
|- - Сергей Борщ   Цитата(ARV @ Mar 4 2009, 12:24) но вопрос...   Mar 4 2009, 10:50
|- - ARV   Цитата(Сергей Борщ @ Mar 4 2009, 13:50) Е...   Mar 4 2009, 13:03
- - ARV   ReAl, я делал практически точно так же, даже проще...   Mar 10 2009, 05:21
- - ReAl   Цитата(ARV @ Mar 10 2009, 07:21) опцию я ...   Mar 10 2009, 07:34


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 00:17
Рейтинг@Mail.ru


Страница сгенерированна за 0.01429 секунд с 7
ELECTRONIX ©2004-2016