LINUX.ORG.RU

Еще одна статья о процессе компиляции

 


0

0

18-19 ноября 2008 г. на сайте http://rus-linux.net был опубликован перевод статьи М.Дила (Mike Diehl) "Как происходит компиляция", в которой рассмотрены этапы компиляции, выполняемые компилятором GCC - обработка препроцессором, трансляция, ассемблирование и линковка. Публикация вызвала оживленное обсуждение на ЛОРе. В одном из постов была упомянута статья "Linkers and Loaders" (автор - Sandeep Grover). Сегодня опубликован перевод и этой статьи.

>>> Подробности

на досуге перед сном можно прочитать.

Levinskij
()

Зачем плодить такие стать? Сейчас же набежит толпа велосипедистов и начнут изобретать свой пистоны и пыхпыхи :/

anonymous
()
Ответ на: комментарий от anonymous

> Вы чего?! Linkers and Loaders - это же толстая книга!

Во-во. А в сабже что за хрень? Просто статья?

Bohtvaroh ★★★★
()

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

EmStudio
()

Такая коротенькая статья, даже и не стоила перевода. Но таки спасибо, может и пригодится кому

stave ★★★★★
()
Ответ на: комментарий от EmStudio

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

и я вот тоже хочу , (анписать свой язык для web) .. только у меня обратная проблемма:

cgi/c++ и php -- не достаточно высокоуровневы (на мой взгляд) . хочу более БОЛЕЕ сверх-мега-высокий уровень :-) :-) динамичнсти языка .

:-D

mkfifo
()

"понимаете, программа - это как бы сено, пропущенное через лошадь.

1. сначала нужно заготовить сено.
это текстовый файл, который нужно набить в любом текстовом редакторе (например, notepad.exe) на заданом языке.
2. потом взять лошадь (компилятор). в данном случае программу tasm.exe, и скормить ей сено (текст). расширение .txt лучше предварительно переименовать в .asm , которое практикуется для языка ассемблер.
3. то, что получится на выходе отнести преподавателю."
(c) forum.ixbt.com

iZEN ★★★★★
()

А вот интересно, а какие книги можете порекомандовать?

anonymous
()

Статья о процессе СБОРКИ, а не компилляции. Как это ни смешно, но в русский язык слово "компилляция" пришло как "трансляция из текста в код", хотя в оригинале озн. именно сборку. Буржуи тупыыыые!
Как вам на счёт такой терминологии: трансляция (из текста в код) -> сборка (несколько кодов в единый архив)?

matumba ★★★★★
()

написал про релокацию и "перемещаемый объектный модуль", и не написал про -fPIC. Странно.

anonymous
()
Ответ на: комментарий от anonymous

не, есть на второй странице.

anonymous
()

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

При статической компиляции (чтобы бинарь работал даже в "пустой" системе), в бинарь тупо засовывается ВЕСЬ полный код библиотек. И бинарник даже простой программы типа RSS ридера получается ~30Mb.

Внимание, вопрос: существуют ли инструменты, которые позволяют собрать статический бинарь только с теми функциями, которые реально используются?

xintrea
()
Ответ на: комментарий от xintrea

ну наверно нужен более умный линкер, который удаляет не использующийся код. Есть ли такой под линукс -- ХЗ. Хотя если всё собирать не статически, а динамически, проблемы как таковой, нет.

А вообще погуглить надо. Например, http://gcc.gnu.org/ml/gcc/1999-11n/msg00752.html http://gcc.gnu.org/ml/gcc-help/2003-08/msg00128.html

anonymous
()
Ответ на: комментарий от xintrea

в морг, батенька, в морг. Сказано же -- dead code elimination. Какой же ты нафиг программист, если не знаешь, как по-русски "dead code elimination", "smart linker", и тп?

anonymous
()
Ответ на: комментарий от xintrea

>> Внимание, вопрос: существуют ли инструменты, которые позволяют собрать статический бинарь только с теми функциями, которые реально используются?

сразу видно , откуда ноги растут :-)

kto_tama ★★★★★
()
Ответ на: комментарий от kto_tama

>> Внимание, вопрос: существуют ли инструменты, которые позволяют собрать статический бинарь только с теми функциями, которые реально используются?

> сразу видно , откуда ноги растут :-)


Откуда?

xintrea
()
Ответ на: комментарий от anonymous

> Какой же ты нафиг программист, если не знаешь, как по-русски smart linker

А ксатти, как?

Редактор связей с определением неиспользуемого кода?

sv75 ★★★★★
()
Ответ на: комментарий от iZEN

Это на башкорг надо было постить :)

anonymous
()
Ответ на: комментарий от anonymous

> -fdce Perform dead code elimination (DCE) on RTL. Enabled by default at -O and higher.

КМК, это относится к компиляции, а не к линковке.

anonymous
()
Ответ на: комментарий от anonymous

Это никакого отношения к сборке не имеет.

2 xintrа

Расслабся, в статических бинарник попадют только прилинкованные функции, а не вся библиотека. Линкер не виноват в том, что твоя прога задействует 90% глибцы. Вообще, пользуйся напрямую вызовами ядра, если тебе настолько противно иметь дело напрямую с BIOS.

LamerOk ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.