FAQ FPC

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Вопрос
А чем занимается gcc, который идет в составе FPC?
Timid
постоялец
Сообщения: 290
Зарегистрирован: 21.11.2007 20:33:15

Сообщение Timid »

Компилит исходники fpc
ViTality
постоялец
Сообщения: 308
Зарегистрирован: 05.10.2007 15:12:02

Сообщение ViTality »

Timid писал(а):Компилит исходники fpc

напрашивается вопрос, почему в таком случае нет возможности скомпилить новую версию fpc без наличия старой бинарной, а только довольствуясь gcc?
Аватара пользователя
Иван Шихалев
энтузиаст
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург
Контактная информация:

Сообщение Иван Шихалев »

Vadim писал(а):А чем занимается gcc, который идет в составе FPC?

На самом деле он используется только как препроцессор для windres. В исходниках FPC — только FPC и чуток ассемблера.
Timid
постоялец
Сообщения: 290
Зарегистрирован: 21.11.2007 20:33:15

Сообщение Timid »

2Иван

Полноте, значит тащим ошибку из версии к версии, если компилимся старым компилятором.
Ядро компиллятора должно собираться на "внешнем языке". Библиотеки - те на паскале.
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Timid
Что-то я не совсем понял:
Timid писал(а):Ядро компиллятора должно собираться на "внешнем языке".

"Внешний язык" - это gcc или предыдущая версия компилятора fpc?
Аватара пользователя
Иван Шихалев
энтузиаст
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург
Контактная информация:

Сообщение Иван Шихалев »

Timid писал(а):Полноте, значит тащим ошибку из версии к версии, если компилимся старым компилятором.

Про «развертку» компиляторов слышали?
Когда-то можно было и на «внешнем» — TP или Delphi, а сейчас — не уверен, поскольку это никому не надо.
И какую ошибку куда мы тащим?
Timid
постоялец
Сообщения: 290
Зарегистрирован: 21.11.2007 20:33:15

Сообщение Timid »

Ну понятно, что "Самый первый" - это ассемблер. Не считая машинных кодов, конечно ;)

Что-то я не совсем понял:

Timid писал(а):
Ядро компиллятора должно собираться на "внешнем языке".

"Внешний язык" - это gcc или предыдущая версия компилятора fpc?


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

И какую ошибку куда мы тащим?

Ошибка всегда одна - проблема с памятью. В том числе - с учетом неправильного представления типов и т.д.
immortal1977
новенький
Сообщения: 16
Зарегистрирован: 14.07.2008 15:52:23
Откуда: Новоуральск

Сообщение immortal1977 »

А не подскажет ли кто ответ на такой вопрос:
Пару лет назад устанавливал у себя FPC 1.x.x (субверсию не помню). Наткнулся на странный глюк - почти все юниты были скомпилированы и не было их исходников. В поисках исходников юнитов, я скачал ту же версию, но уже в сырцах, удалил все скомпиленные юниты и заменил их не скомпиленными версиями. После этого FPC отказался вообще что-то компилировать, в связи с чем и вопрос - как обстоит с исходниками юнитов дело сейчас. Хочу скачать FPC 2.2.0, но боюсь набрести на те же грабли - полное отсутствие юнитов в сырцах.

P.S. Вообще-то такая ситуация мне вообще не понятна. Слава богу "за Delphi не первый год замужем" и прекрасно понимаю всю абсурдность отсутствия сырцов в дефолтной поставке FPC. А если надо константу какую посмотреть, или реализацию функции... Буду благодарен за любой развернутый ответ.
Аватара пользователя
Brainenjii
энтузиаст
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение Brainenjii »

Всё есть ^_^
Аватара пользователя
Attid
долгожитель
Сообщения: 2588
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

Brainenjii писал(а):Всё есть ^_^

не обманывай человека, если будет тянуть скомпилиный ФПЦ то сурсов не будет.

Добавлено спустя 3 минуты 56 секунд:
immortal1977 писал(а):удалил все скомпиленные юниты и заменил их не скомпиленными версиями.

нахера удалял?

immortal1977 писал(а):После этого FPC отказался вообще что-то компилировать,

ну скачай линукс в исходниках , он будет работать ? нет, потому что исходники это одно, а компилятор это другое.


immortal1977 писал(а):боюсь набрести на те же грабли

есть 2 пути или качаешь и то и то или качаешь только исходники и компилятор и собираешь все сам, тебе советую первый путь.

immortal1977 писал(а):Буду благодарен за любой развернутый ответ.

мухи отдельно, котлеты отдельно, или при build all будет у тя все пересобираться 2 часа.
immortal1977
новенький
Сообщения: 16
Зарегистрирован: 14.07.2008 15:52:23
Откуда: Новоуральск

Сообщение immortal1977 »

Attid писал(а):не обманывай человека, если будет тянуть скомпилиный ФПЦ то сурсов не будет.


А как же и главное где эти сырцы брать? Нужто опять ради юнитов еще и весь FPC в сырцах тягать?

Добавлено спустя 4 минуты 9 секунд:
Attid писал(а):нахера удалял?


Или чего-то не понимаю, или FPC от дельфей сильно отличается. Для компилирования моей проги, мне достаточно юнита в сырцах, а уже компилятор и юнит перекомпилит если юнит в Uses прписан. Разве нет?
Аватара пользователя
Attid
долгожитель
Сообщения: 2588
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

immortal1977 писал(а):FPC от дельфей сильно отличается.

сильно, фпц сам по себе только консольные приложения пишет, а дельфи это гуи монстр =)


immortal1977 писал(а):уже компилятор и юнит перекомпилит если юнит

только зачем его компилировать каждый раз если достаточно один раз скомпилировать, положить в /usr/lib/fpc и юзать всю жизнь.
как показал опрос модифицируют стандартные либы очень маленький процент, и без понимания как оно работает тебе в этот процент стремится не стоит.



вот у тебя есть компилятор версии 1,х скачивай исходники 2,2 и собирай себе компилятор 2,2 потом собирай либы и будет тебе счастье, все на форуме и в статьях расписанно.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
Сообщения: 1409
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Sergei I. Gorelkin »

immortal1977 писал(а):Или чего-то не понимаю, или FPC от дельфей сильно отличается. Для компилирования моей проги, мне достаточно юнита в сырцах, а уже компилятор и юнит перекомпилит если юнит в Uses прписан. Разве нет?


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

Attid писал(а):вот у тебя есть компилятор версии 1,х скачивай исходники 2,2 и собирай себе компилятор 2,2 потом собирай либы и будет тебе счастье, все на форуме и в статьях расписанно.


Версия 2.2 компилятором 1.x не соберется. Для этого нужен компилятор предыдущего релиза (тот же 2.2.0 если я понимаю правильно).
Аватара пользователя
Attid
долгожитель
Сообщения: 2588
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

Вопрос : где взять бинарник фпц для компиляции

Ответ : http://svn.freepascal.org/svn/fpcbuild/ ... ll/binw32/

Вопрос : где взять бинутилс для кроскомпиляции

Ответ : ftp://ftp.freepascal.org/fpc/contrib/cross/ также могут пригодится
ftp://ftp.cygwin.com/
http://gnuwin32.sourceforge.net/
ftp://ftp.eu.kernel.org/pub/linux/devel/binutils/
http://packages.debian.org/stable/devel ... 2-binutils


Вопрос : как можно обновиться из свн имея определеный срез

Sergei I. Gorelkin
SVN может все! С помощью TortoiseSVN это делается примерно так:

1. Делаем checkout прямо в папку с исходниками, поставив галку Only check out top folder. При этом содержимое папки не выкачивается.

2. Кликаем правой кнопкой на папке и выбираем Show log. Получив лог, нажимаем Ctrl и выделяем ту ревизию, от которой исходники, и ту, до которой нужно обновиться. Опять кликаем правой кнопкой и выбираем Show differences as unified log.

3. В результате имеем патч, который накладываем на исходники обычным порядком (patch -p0 < file.diff)

Некоторый трафик при этом возникает, но он минимальный из всех возможных. Кроме того, нужно знать путь в репозитарии и номер ревизии, который соответствует исходникам, иначе получится ерунда.
Ответить