FAQ FPC
Модератор: Модераторы
Вопрос
А чем занимается gcc, который идет в составе FPC?
А чем занимается gcc, который идет в составе FPC?
Компилит исходники fpc
Timid писал(а):Компилит исходники fpc
напрашивается вопрос, почему в таком случае нет возможности скомпилить новую версию fpc без наличия старой бинарной, а только довольствуясь gcc?
- Иван Шихалев
- энтузиаст
- Сообщения: 1138
- Зарегистрирован: 15.05.2006 11:26:13
- Откуда: Екатеринбург
- Контактная информация:
Vadim писал(а):А чем занимается gcc, который идет в составе FPC?
На самом деле он используется только как препроцессор для windres. В исходниках FPC — только FPC и чуток ассемблера.
2Иван
Полноте, значит тащим ошибку из версии к версии, если компилимся старым компилятором.
Ядро компиллятора должно собираться на "внешнем языке". Библиотеки - те на паскале.
Полноте, значит тащим ошибку из версии к версии, если компилимся старым компилятором.
Ядро компиллятора должно собираться на "внешнем языке". Библиотеки - те на паскале.
Timid
Что-то я не совсем понял:
"Внешний язык" - это gcc или предыдущая версия компилятора fpc?
Что-то я не совсем понял:
Timid писал(а):Ядро компиллятора должно собираться на "внешнем языке".
"Внешний язык" - это gcc или предыдущая версия компилятора fpc?
- Иван Шихалев
- энтузиаст
- Сообщения: 1138
- Зарегистрирован: 15.05.2006 11:26:13
- Откуда: Екатеринбург
- Контактная информация:
Timid писал(а):Полноте, значит тащим ошибку из версии к версии, если компилимся старым компилятором.
Про «развертку» компиляторов слышали?
Когда-то можно было и на «внешнем» — TP или Delphi, а сейчас — не уверен, поскольку это никому не надо.
И какую ошибку куда мы тащим?
Ну понятно, что "Самый первый" - это ассемблер. Не считая машинных кодов, конечно 
Внешний - признанный достаточно надежным для текущей платформы и позволяющий написать парсер языка (например, freepascal) до вызова системных функций или кодов процессора.
Ошибка всегда одна - проблема с памятью. В том числе - с учетом неправильного представления типов и т.д.
Что-то я не совсем понял:
Timid писал(а):
Ядро компиллятора должно собираться на "внешнем языке".
"Внешний язык" - это gcc или предыдущая версия компилятора fpc?
Внешний - признанный достаточно надежным для текущей платформы и позволяющий написать парсер языка (например, freepascal) до вызова системных функций или кодов процессора.
И какую ошибку куда мы тащим?
Ошибка всегда одна - проблема с памятью. В том числе - с учетом неправильного представления типов и т.д.
-
immortal1977
- новенький
- Сообщения: 16
- Зарегистрирован: 14.07.2008 15:52:23
- Откуда: Новоуральск
А не подскажет ли кто ответ на такой вопрос:
Пару лет назад устанавливал у себя FPC 1.x.x (субверсию не помню). Наткнулся на странный глюк - почти все юниты были скомпилированы и не было их исходников. В поисках исходников юнитов, я скачал ту же версию, но уже в сырцах, удалил все скомпиленные юниты и заменил их не скомпиленными версиями. После этого FPC отказался вообще что-то компилировать, в связи с чем и вопрос - как обстоит с исходниками юнитов дело сейчас. Хочу скачать FPC 2.2.0, но боюсь набрести на те же грабли - полное отсутствие юнитов в сырцах.
P.S. Вообще-то такая ситуация мне вообще не понятна. Слава богу "за Delphi не первый год замужем" и прекрасно понимаю всю абсурдность отсутствия сырцов в дефолтной поставке FPC. А если надо константу какую посмотреть, или реализацию функции... Буду благодарен за любой развернутый ответ.
Пару лет назад устанавливал у себя FPC 1.x.x (субверсию не помню). Наткнулся на странный глюк - почти все юниты были скомпилированы и не было их исходников. В поисках исходников юнитов, я скачал ту же версию, но уже в сырцах, удалил все скомпиленные юниты и заменил их не скомпиленными версиями. После этого FPC отказался вообще что-то компилировать, в связи с чем и вопрос - как обстоит с исходниками юнитов дело сейчас. Хочу скачать FPC 2.2.0, но боюсь набрести на те же грабли - полное отсутствие юнитов в сырцах.
P.S. Вообще-то такая ситуация мне вообще не понятна. Слава богу "за Delphi не первый год замужем" и прекрасно понимаю всю абсурдность отсутствия сырцов в дефолтной поставке FPC. А если надо константу какую посмотреть, или реализацию функции... Буду благодарен за любой развернутый ответ.
- Brainenjii
- энтузиаст
- Сообщения: 1351
- Зарегистрирован: 10.05.2007 00:04:46
Всё есть ^_^
- Attid
- долгожитель
- Сообщения: 2588
- Зарегистрирован: 27.10.2006 17:29:15
- Откуда: 44°32′23.63″N 41°2′25.2″E
- Контактная информация:
Brainenjii писал(а):Всё есть ^_^
не обманывай человека, если будет тянуть скомпилиный ФПЦ то сурсов не будет.
Добавлено спустя 3 минуты 56 секунд:
immortal1977 писал(а):удалил все скомпиленные юниты и заменил их не скомпиленными версиями.
нахера удалял?
immortal1977 писал(а):После этого FPC отказался вообще что-то компилировать,
ну скачай линукс в исходниках , он будет работать ? нет, потому что исходники это одно, а компилятор это другое.
immortal1977 писал(а):боюсь набрести на те же грабли
есть 2 пути или качаешь и то и то или качаешь только исходники и компилятор и собираешь все сам, тебе советую первый путь.
immortal1977 писал(а):Буду благодарен за любой развернутый ответ.
мухи отдельно, котлеты отдельно, или при build all будет у тя все пересобираться 2 часа.
-
immortal1977
- новенький
- Сообщения: 16
- Зарегистрирован: 14.07.2008 15:52:23
- Откуда: Новоуральск
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
- Контактная информация:
immortal1977 писал(а):FPC от дельфей сильно отличается.
сильно, фпц сам по себе только консольные приложения пишет, а дельфи это гуи монстр =)
immortal1977 писал(а):уже компилятор и юнит перекомпилит если юнит
только зачем его компилировать каждый раз если достаточно один раз скомпилировать, положить в /usr/lib/fpc и юзать всю жизнь.
как показал опрос модифицируют стандартные либы очень маленький процент, и без понимания как оно работает тебе в этот процент стремится не стоит.
вот у тебя есть компилятор версии 1,х скачивай исходники 2,2 и собирай себе компилятор 2,2 потом собирай либы и будет тебе счастье, все на форуме и в статьях расписанно.
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
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
- Контактная информация:
Вопрос : где взять бинарник фпц для компиляции
Ответ : 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)
Некоторый трафик при этом возникает, но он минимальный из всех возможных. Кроме того, нужно знать путь в репозитарии и номер ревизии, который соответствует исходникам, иначе получится ерунда.
Ответ : 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)
Некоторый трафик при этом возникает, но он минимальный из всех возможных. Кроме того, нужно знать путь в репозитарии и номер ревизии, который соответствует исходникам, иначе получится ерунда.
