Автоматизированное место врача от Leybasoft®
Главная » 2014 » Октябрь » 7 » Как я ставил транковый fpc и lazarus на Debian 7.6 x32
0:17 AM
Как я ставил транковый fpc и lazarus на Debian 7.6 x32

Давно безуспешно бьюсь, чтобы поставить последний релиз компилятора и Лазаря на Линукс.  Стабильный релиз на момент написания правки заметки (fpc 3.0.4  и Lazarus 2.0.8) поставить не составило труда: качаются  и ставятся отсюда (для i386/amd64) три пакета соответственно fpc-src_3.0.4-1_i386.deb/fpc-src_3.0.4-2_amd64.deb (исходники компилятора), fpc-laz_3.0.4-1_i386.deb/fpc-laz_3.0.4-1_amd64.deb(бинарники компилятора и утилиты) и lazarus-project_2.0.8-0_i386.deb/lazarus-project_2.0.8-0_amd64.deb (сам Lazarus), и все устанавливается и работает!  

А вот с установкой транков приходится повозиться. Чтение мануала тоже не принесло пользы: буржуйский текст воспринимается тяжело o_O.

Однако, охота пуще неволи. Потому я опять взялся за старое. Поставил в виртуалке свежий Дебиан с диска и приступил (за основу взят материал отсюда). Выражаю признательность за помощь и множество полезных советов Алексею Лагунову aka alexs (он же автор порта под Lazarus известного набора компонентов rxlib)

Update: с недавнего времени появилась удобная утилита fpcupdeluxe, которая позволяет легко и непринужденно получать любую версию компилятора и Лазаруса любой конфигурации, в т.ч. и с кросскомпиляцией.

1. Установка необходимых библиотек

ставим следующие пакеты (очередность установки желательно соблюсти)

  • x11proto-print-dev (в стандартной поставке отсутствует, скачать можно отсюда)
  • build-essential (включает в себя пакеты: binutils, dpkg-dev, fakeroot, g++, gcc, libalgorithm-diff-perl, libalgorithm-diff-xs-perl, libalgorithm-merge-perl, libc-dev-bin, libc6-dev, libdpkg-perl, libfile-fcntllock-perl, libitm1, libstdc++-dev, linux-libc-dev, make, manpages-dev)
  • libx11-dev
  • libxp6
  • libgdk-pixbuf2.0-dev
  • libpango1.0-dev
  • libgtk2.0-dev
  • gdb
  • subversion (svn-клиент)
  • libxp-dev

В терминале:

качаем недостающий пакет x11proto-print-dev

$ wget http://ftp.ru.debian.org/debian/pool/main/x/x11proto-print/x11proto-print-dev_1.0.5-2_all.deb

ставим его

$ sudo dpkg -i x11proto-print-dev_1.0.5-2_all.deb

ставим остальные пакеты скопом (одной строкой)

$ sudo apt-get install build-essential libx11-dev libxp6 libxp6-dbg libgdk-pixbuf2.0-dev libpango1.0-dev libgtk2.0-dev libxp-dev gdb

примечание:
1. пакет с отладчиком gdb у меня почему-то не встал, пришлось ставить его отдельно.
2. если пакеты не ставятся через командную строку, что можно это сделать посредством менеджера пакетов Synaptic, вызвав его в терминале

# gksudo synaptic

3. на Debian 9 из установки следует исключить пакеты libxp6, libxp6-dbg и libxp-dev, при этом добавить пакет libgl1-mesa-dev (иначе после установки некоторых компонент, использующих библиотеку LibGL.soLazarus при пересборке выдает невнятную ошибку компиляции). Таким образом, на  Debian 9 установке необходимых пакетов будет выглядеть примерно так:
 

$ sudo apt-get install build-essential libx11-dev libgdk-pixbuf2.0-dev libpango1.0-dev libgtk2.0-dev gdb libgl1-mesa-dev
 

2. Установка стабильной версии компилятора (для i386/amd64)

качаем сорцы (на момент последней правки статьи текущим стабильным релизом компилятора была версия 3.2.0, но по прошествии времени версии обновляются, поэтому актуальную версию компилятора и его сорцов всегда смотрите здесь(для i386)  или здесь (для amd64))

для i386

$ wget https://sourceforge.net/projects/lazarus/files/Lazarus%20Linux%20i386%20DEB/Lazarus%202.0.8/fpc-src_3.0.4-1_i386.deb


и ставим его

$ sudo dpkg -i fpc-src_3.0.4-1_i386.deb

затем качаем сам компилятор

$ wget https://sourceforge.net/projects/lazarus/files/Lazarus%20Linux%20i386%20DEB/Lazarus%202.0.8/fpc-laz_3.0.4-1_i386.deb

ставим и его

# sudo dpkg -i fpc-laz_3.0.4-1_i386.deb

соответственно для amd64

$ wget https://sourceforge.net/projects/lazarus/files/Lazarus%20Linux%20amd64%20DEB/Lazarus%202.0.8/fpc-src_3.0.4-2_amd64.deb
$ sudo dpkg -i fpc-src_3.0.4-2_amd64.deb 

$ wget https://sourceforge.net/projects/lazarus/files/Lazarus%20Linux%20amd64%20DEB/Lazarus%202.0.8/fpc-laz_3.0.4-1_amd64.deb
$ sudo dpkg -i fpc-laz_3.0.4-1_amd64.deb

Получаем в результате такое сообщение в терминале

Running on linux
Write permission in /etc.
Writing sample configuration file to /etc/fpc.cfg
Writing sample configuration file to /usr/lib/fpc/3.0.4/ide/text/fp.cfg
Writing sample configuration file to /usr/lib/fpc/3.0.4/ide/text/fp.ini
Writing sample configuration file to /etc/fppkg.cfg
Writing sample configuration file to /etc/fppkg/default

 

Update(4.12.2017): если стабильная версия компилятора уже вышла, а окончательного релиза Lazarus'a до сих пор нет (а значит, нет и deb-пакетов), то можно скачать tar-архив отсюда, распаковать его в любую папку и запустить находящийся там install.sh. Это будет выглядеть примерно так (я скачал fpc 3.0.4 х32)

leyba@deb9:~/Downloads/fpc-3.0.4.i386-linux$ sudo ./install.sh

This shell script will attempt to install the Free Pascal Compiler
version 3.0.4 with the items you select

Install prefix (/usr or /usr/local) [/usr] :


Можно установить его локально, можно системно (в квадратных скобках умолчательное значение). Жмем "Enter"
Install prefix (/usr or /usr/local) [/usr] :

Installing compiler and RTL for i386-linux...
Installing rtl packages...
Installing rtl-console
<skiped>
Installing unicode
Install Textmode IDE (Y/n) ?


Отвечаем Y(Yes) на вопросе об установке справки, демок и т.д. В конце инсталлятор выдаст
Running on linux

Write permission in /etc.
Writing sample configuration file to /etc/fpc.cfg
Saved old "fpc.cfg" to "fpc.bak"
Writing sample configuration file to /usr/lib/fpc/3.0.4/ide/text/fp.cfg
Writing sample configuration file to /usr/lib/fpc/3.0.4/ide/text/fp.ini
Writing sample configuration file to /etc/fppkg.cfg
Saved old "fppkg.cfg" to "fppkg.bak"
Writing sample configuration file to /etc/fppkg/default
Saved old "default" to "default.bak"

End of installation.


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


 

3. Установка последних (транковых) версий fpc и lazarus.

Чтобы не искать их по диску, складываем все в одну папку (например development) в домашней директории:

создаем ее

$ mkdir ~/development

переходим в нее

$ cd development

ставим svn-клиента

$ sudo apt-get install subversion

Update (09.03.2018): под никсы появился GUI-шный вариант svn-клиента RabbitVCS. С его обзором можно познакомиться  здесь.


качаем последний транк fpc в папку fpc_trunk

$ svn co http://svn.freepascal.org/svn/fpc/trunk/ fpc_trunk

и транк Лазаря в папку lazarus_trunk

$ svn co http://svn.freepascal.org/svn/lazarus/trunk lazarus_trunk


Update1:  если нужна ревизия определенного номера компилятора или лазаруса, то можно скачать только ее. Например:
$ svn co -r 37700 http://svn.freepascal.org/svn/fpc/trunk/ fpc_r37700
Компилятор с номером ревизии 37700 будет закачан в папку fpc_r37700. Аналогично для Лазаруса.

Update2:  узнать текущую версию транка (fpc  или Лазаруса) можно так

$ svn info http://svn.freepascal.org/svn/fpc/trunk/

Также легко получить помощь по опциям (# svn help) и ключам команд (# svn help <команда>)

Update3:  последние снапшоты транка Лазаруса всегда можно скачать здесь. А потом распаковать в папку lazarus_trunk. Особенно это актуально для тех, у кого ограничен интернет-траффик. Такие сборки "весят" менее 100 Мб.

Update4 (важный!!!):  на момент последней правки статьи статьи текущим транком fpc была версия 3.3.1, а стабильной - версия 3.0.4. Поэтому ниже следующий код справедлив только для этих версий. Если версии их поменяются, необходимо внести коррективы в используемые команды. Иначе вы получите ошибки компиляции.

Компилируем и устанавливаем новый fcp: переходим в каталог с новым компилятором, удаляем ссылки на старый компилятор, собираем и ставим новый компилятор

$ cd fpc_trunk

чистим "старые" откомпилированные ресурсы (если транк fpc апдейтится. Кстати, про эту команду и ее опции неплохо написано здесь)

$ make clean

если устанавливаем новый транк компилятора взамен предыдущего, лучше предусмотрительно удалить его сорцы 

$ sudo rm -Rfv /usr/lib/fpc/3.3.1

и удалить симлинк от предыдущей установки в папке с бинарниками
для i386

$ sudo rm -Rfv /usr/bin/ppc386
для amd64
$ sudo rm -Rfv /usr/bin/ppcx64


для i386
собираем сорцы транка (не забываем про номер актуальной версии, которую мы теперь скачали, и меняем циферки по мере необходимости), используя компилятор стабильной версии (который мы установили ранее)

$ make all OPT='-gl' PP=/usr/lib/fpc/3.0.4/ppc386 OVERRIDEVERSIONCHECK=1

ставим новый компилятор (установится сюда /usr/lib/fpc/3.3.1 - версия транка может меняться) с использованием ресурсов готового компилятора 3.0.4


$ sudo make install INSTALL_PREFIX=/usr PP=/usr/lib/fpc/3.0.4/ppc386 OVERRIDEVERSIONCHECK=1

добавляем симлинк в папке с бинарниками на транковый компилятор (Лазарус будет искать его именно там)

$ sudo ln -sf /usr/lib/fpc/3.3.1/ppc386 /usr/bin/ppc386

соответственно для amd64

$ make all OPT='-gl' PP=/usr/lib/fpc/3.0.4/ppcx64 OVERRIDEVERSIONCHECK=1

$ sudo make install INSTALL_PREFIX=/usr PP=/usr/lib/fpc/3.0.4/ppcx64 OVERRIDEVERSIONCHECK=1

$ sudo ln -sf /usr/lib/fpc/3.3.1/ppcx64 /usr/bin/ppcx64

"перегоняем" сорцы транка из домашней папки в системную (все сорцы будут здесь /usr/share/src/fpc-3.3.1/fpc)

Update 5: если компилятор переустанавливается, то эту папку необходимо сначала удалить

$ sudo rm -Rfv /usr/share/src/fpc-3.3.1/fpc/

$ sudo make install sourceinstall PREFIX=/usr

задаем симлинк для Лазаруса, где ему искать сорцы компилятора (для компиляции собственных ресурсов)

$ sudo ln -sf /usr/share/src/fpc-3.3.1/fpc /usr/share/fpcsrc

переопределяем конфигурационный файл с /etc/fpc.cgf на /usr/lib/fpc/3.3.1/samplecfg

$ /usr/lib/fpc/3.3.1/samplecfg /usr/lib/fpc/3.0.4 /etc

Update 6: строго говоря, сорцы можно оставить в папке со скачанной ревизией fpc (т.е. не применять команду sudo make install sourceinstall PREFIX=/usr). Необходимо лишь будет поправить пути в симлинке для Лазаря и конфига с
usr/share/src/fpc-3.3.1/fpc на ~/development/fpc_trunk/ соответственно

для для i386
все то же самое, только при компиляции бинарников указывается ppc386

Компилируем и устанавливаем новый Lazarus: переходим в каталог с транковым Лазарем, собираем и устанавливаем его
$ cd ~/development/lazarus_trunk
$ make clean (только, если ранее установленный каталог был обновлен)
$ make
$ make bigide

Update 7: я предпочитаю сам выбирать, где среда будет хранить свои настройки. Для этого достаточно прибегнуть к этому способу.

Update 8: чтобы ускорить процесс, описанный по ссылке выше создадим программно конфигурационный файл Лазаря:

$ echo '--primary-config-path=~/development/lazarus_trunk/_config' > lazarus.cfg

и папку для настроек среды:
$ mkdir ~/development/lazarus_trunk/_config

После окончания сборки идем в папку с транком лазаруса и запускаем startlazarus




 4. "Доработка напильником".

Update: справедливости ради отмечу, что написанное ниже уже не актуально для транков Лазаруса с версии 1.9

Но на этом еще не все, что поделаешь - законы жанра не позволяют ;-). После запуска среды мы можем увидеть в редакторе сообщений следующее:
lazarus.pp(142,1) Warning: "crti.o" not found, this will probably cause a linking failure
lazarus.pp(142,1) Warning: "crtn.o" not found, this will probably cause a linking failure

Это значит, что среда не видит объектные файлы пакета gcc, а значит теряется возможность кросскомпиляции.
Тогда ищем пакеты здесь: /usr/lib.
У меня они нашлись здесь: /usr/lib/i386-linux-gnu
Теперь выясняем, в чем дело. Открываем конфигурационный файл нашей IDE /usr/lib/fpc/3.1.1/samplecfg и обращаем внимание на текст (поскольку мы сидим под учеткой без root-прав, т.е мы как раз "No write premission in $sysdir")

# Detect if we have write permission in sysdir.
if [ -w "$sysdir" ] ; then
echo Write permission in $sysdir.
fpccfgfile="$sysdir"/fpc.cfg
fppkgfile="$sysdir"/fppkg.cfg
defaultfile="$sysdir"/fppkg/default
compilerconfigdir="-d CompilerConfigDir=$sysdir/fppkg"
else
echo No write premission in $sysdir.
fpccfgfile="$HOME"/.fpc.cfg
fppkgfile="$HOME"/.config/fppkg.cfg
defaultfile="$HOME"/.fppkg/config/default
fi
#
Находим этот самый .fpc.cfg в домашней директории, открываем и видим (напомню, что у меня Дебиан i386, т.е. 32-разрядный):
# path to the gcclib
#ifdef cpui386
-Fl/usr/lib/gcc/i486-linux-gnu/4.9
#endif
#ifdef cpux86_64
-Fl/usr/lib/gcc/i486-linux-gnu/4.9
#endif
Непорядок! Добавим к выделенной строке через двоеточие еще строчку, чтобы компилятор искал необходимые библиотеки и там. Должно получиться так:
#ifdef cpui386
-Fl/usr/lib/gcc/i486-linux-gnu/4.9:/usr/lib/i386-linux-gnu
Сохраняем файл и запускаем Лазарус. Теперь можно его пересобрать, выше описанную ошибку мы не получим.

Примечание: если в системе установлено неск. конфигурационных файлов (напр, "мусор" после ранее установленных, но потом удаленных версий fpc), то "текущий" (т.е. тот, который используется под вашей учеткой) можно найти командой:
# fpc -vt bogus
В результате будет показано из какого файла компилятор ищет пути к бибилиотекам, а заодно будут проверены эти самые пути на корректность. В терминале будет выведено что-то типа (вывод я подсократил за скобками <skiped>, и да, <user> - это имя вашей учетки):
Configfile search: /home/<user>/.fpc.cfg
Reading options from file /home/<user>/.fpc.cfg
Path "./.fppkg/lib/fpc/3.1.1/units/i386-linux/*/" not found
Path "/usr/lib/fpc/3.1.1/lib/i386-linux/" not found
Free Pascal Compiler version 3.1.1 [2016/07/12] for i386
Copyright (c) 1993-2014 by Florian Klaempfl and others
Searching file /lib/ld-linux.so.2... found
Path "/usr/X11R6/lib/" not found
Compiler: /usr/lib/fpc/3.1.1/ppc386
Target OS: Linux for i386
Using executable path: /usr/lib/fpc/3.1.1/
Using unit path: /usr/lib/fpc/3.1.1/units/i386-linux/httpd22/
<skiped>
Using object path: /usr/lib/fpc/3.1.1/
Compiling bogus
Searching file bogus... not found
Fatal: Can not open file "bogus"
Fatal: Compilation aborted
Error: /usr/bin/ppc386 returned an error exitcode
Так что, заодно можно проверить корректность других путей и устранить потенциальные косяки.

Пока вроде все...
Категория: Программирование | Просмотров: 6196 | Добавил: leyba | Теги: fpc, debian, Trunk, Лазарус, Pascal, fpc.cfg, дебиан, транк, Lazarus | Рейтинг: 0.0/0
Всего комментариев: 2
avatar
0
1 shyub • 8:39 AM, 11.06.2016
Большое спасибо за статью. Однако с "доработкой напильником" не всё получается: не могу открыть /home/<имя_пользователя>/.fpc.cfg Команда fpc -vt bogus показывает, что такой файл есть, однако, по команде sudo gedit /home/<имя_пользователя>/.fpc.cfg открывается либо чистый (не содержащий вообще ничего) gedit, либо пишет красным цветом, что доступ к .fpc.cfg исчерпан. Попытка редактирования других найденных файлов fpc.cfg приводит к тому, что Лазарус не находит FPC. Как и чем вы открывали для редактирования .fpc.cfg?
avatar
0
2 leyba • 0:15 AM, 07.07.2016
Извините, что не сразу отвечаю.

Можно использовать редактор nano или любой другой. Главное, чтобы у вас были права на редактирование этого файла.

Подробнее лучше спросить у линуксоидов на любом форуме
avatar