Сборка на x86_64

Вопросы программирования и использования среды Lazarus.

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

Сборка на x86_64

Сообщение Brainenjii » 07.05.2011 09:19:35

Не удаётся собрать лазарус под x86_64. По какой-то странной причине make LCL_PLATFORM=qt OS_TARGET=linux CPU_TARGET=x86_64 выдаёт

make[2]: Entering directory `/home/Brainenjii/lazarus/ide'
/usr/local/bin/fpc -gl -dlclqt -Fu../lcl/units/x86_64-linux -Fu../lcl/units/x86_64-linux/qt -Fu../components/codetools/units/x86_64-linux -Fu../components/synedit/units/x86_64-linux -Fu../components/lazcontrols/lib/x86_64-linux -Fu../components/custom -Fu../components/mpaslex -Fu../ideintf/units/x86_64-linux -Fu../designer -Fu../debugger -Fu../debugger/frames -Fu../converter -Fu../packager -Fu../packager/frames -Fu../packager/units/x86_64-linux -Fu../units/x86_64-linux -Fuframes -Fu. -Fiinclude -Fiinclude/linux -Fi../images -FE.. -FU../units/x86_64-linux -Cg -Fl/usr/lib64/gcc/x86_64-suse-linux/4.5 -Fl/usr/X11R6/lib64/Xaw3d -Fl/usr/X11R6/lib64 -Fl/usr/lib64/Xaw3d -Fl/usr/X11R6/lib/Xaw3d -Fl/usr/X11R6/lib -Fl/usr/lib/Xaw3d -Fl/usr/x86_64-suse-linux/lib -Fl/usr/local/lib -Fl/opt/kde3/lib -Fl/lib64 -Fl/lib -Fl/usr/lib64 -Fl/usr/lib -Fl/usr/local/lib64 -Fl/opt/kde3/lib64 -Flinclude -Fl/etc/ld.so.conf.d/*.conf -dx86_64 lazarus.pp
Free Pascal Compiler version 2.4.2 [2011/03/13] for i386
Copyright (c) 1993-2010 by Florian Klaempfl
Target OS: Linux for i386
Compiling lazarus.pp
Compiling resource ../units/x86_64-linux/lazarus.or
Warning: Object registry.o not found, Linking may fail !
Warning: Object xmlreg.o not found, Linking may fail !
Warning: Object resource.o not found, Linking may fail !
Warning: Object resdatastream.o not found, Linking may fail !
Warning: Object resourcetree.o not found, Linking may fail !
Warning: Object resmerger.o not found, Linking may fail !
Warning: Object resfactory.o not found, Linking may fail !
Warning: Object stringtableresource.o not found, Linking may fail !
Warning: Object groupiconresource.o not found, Linking may fail !
Warning: Object groupcursorresource.o not found, Linking may fail !
Warning: Object groupresource.o not found, Linking may fail !
Warning: Object icocurtypes.o not found, Linking may fail !
Warning: Object reswriter.o not found, Linking may fail !
Warning: Object versionresource.o not found, Linking may fail !
Warning: Object versiontypes.o not found, Linking may fail !
Warning: Object versionconsts.o not found, Linking may fail !
Linking ../lazarus
/usr/bin/ld: warning: ../link.res contains output sections; did you forget -T?
/usr/bin/ld: skipping incompatible /usr/lib64/gcc/x86_64-suse-linux/4.5/crtbegin.o when searching for /usr/lib64/gcc/x86_64-suse-linux/4.5/crtbegin.o
/usr/bin/ld: cannot find /usr/lib64/gcc/x86_64-suse-linux/4.5/crtbegin.o
/usr/bin/ld: cannot find registry.o
/usr/bin/ld: cannot find xmlreg.o
/usr/bin/ld: cannot find resource.o
/usr/bin/ld: cannot find resdatastream.o
/usr/bin/ld: cannot find resourcetree.o
/usr/bin/ld: cannot find resmerger.o
/usr/bin/ld: cannot find resfactory.o
/usr/bin/ld: cannot find stringtableresource.o
/usr/bin/ld: cannot find groupiconresource.o
/usr/bin/ld: cannot find groupcursorresource.o
/usr/bin/ld: cannot find groupresource.o
/usr/bin/ld: cannot find icocurtypes.o
/usr/bin/ld: cannot find reswriter.o
/usr/bin/ld: cannot find versionresource.o
/usr/bin/ld: cannot find versiontypes.o
/usr/bin/ld: cannot find versionconsts.o
/usr/bin/ld: skipping incompatible /usr/lib64/libpthread.so when searching for -lpthread
/usr/bin/ld: skipping incompatible /usr/lib64/libpthread.a when searching for -lpthread
Error: Error while linking
Fatal: There were 1 errors compiling module, stopping
Fatal: Compilation aborted
Error: /usr/bin/ppc386 returned an error exitcode (normal if you did not specify a source file to be compiled)
make[2]: *** [lazarus] Error 1
make[2]: Leaving directory `/home/Brainenjii/lazarus/ide'
make[1]: *** [ide] Error 2
make[1]: Leaving directory `/home/Brainenjii/lazarus/ide'
make: *** [ide] Error 2

В общем, как понимаю, оно пытается собраться под i386, но библиотеки ищет в /usr/lib64 и валится с несовместимостью... Но что с этим делать
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: Сборка на x86_64

Сообщение Odyssey » 07.05.2011 12:15:00

Похоже, что ни компилятор, ни линкер не могут найти некоторые из модулей FCL (registry, xmlreg и т.д.). Стоит проверить, установлены ли они, если да -- то куда, и задействован ли это путь при сборке.
Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24

Re: Сборка на x86_64

Сообщение Brainenjii » 07.05.2011 18:22:13

да всё как обычно делаю - fpc из rpm'a, исходники - из архива (в сборке по make all они не участвуют, так что без разницы должно быть)... Как проверить пути?

Добавлено спустя 1 час 8 минут 11 секунд:
удивительное рядом 0.о
удалил ppc386, который делал для кросс-компиляции под x86-32 (к firebird/mssql так и не удалось подключиться под x86-64) - собралось...
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: Сборка на x86_64

Сообщение Brainenjii » 09.05.2011 22:55:54

это начинает взрывать мозг... Балуюсь с проектом, добавляю/удаляю - всё хорошо, всё собирается, всё работает. А потом - бац - и
bWebSystem.lpr(52,1) Warning: Object fpcunit.o not found, Linking may fail !
bWebSystem.lpr(52,1) Warning: Object testutils.o not found, Linking may fail !
bWebSystem.lpr(52,1) Warning: Object testregistry.o not found, Linking may fail !
bWebSystem.lpr(52,1) Warning: Object testdecorator.o not found, Linking may fail !
Linking bWebSystem
/usr/bin/ld: warning: link.res contains output sections; did you forget -T?
/usr/bin/ld: cannot find fpcunit.o
/usr/bin/ld: cannot find testutils.o
/usr/bin/ld: cannot find testregistry.o
/usr/bin/ld: cannot find testdecorator.o
/usr/bin/ld: skipping incompatible /usr/lib64/libpthread.so when searching for -lpthread
/usr/bin/ld: skipping incompatible /usr/lib64/libpthread.a when searching for -lpthread
bWebSystem.lpr(52,1) Error: Error while linking
bWebSystem.lpr(52,1) Fatal: There were 1 errors compiling module, stopping
ERROR: failed compiling of project /home/Brainenjii/Develop/bWebSystem/bWebSystem.lpi

На этот раз игры с удалением/добавлением ppc386 не прошли >_<
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: Сборка на x86_64

Сообщение Padre_Mortius » 10.05.2011 00:10:46

Brainenjii
А если попробовать выполнить чистую установку fpc предварительно удалив все предыдущие версии и конфигурационные файлы?
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Сборка на x86_64

Сообщение Brainenjii » 10.05.2011 00:28:32

да уже вроде всё перепробовал - свежий из rpm поставил - не помогло, удалил всё отовсюду, из исходников новый собрал - полдня проработало - и <тут мат>. Взял работу на выходные, называется >_< Уже боюсь притрагиваться к настройкам рабочей машины...
Хоть в какую сторону смотреть - почему ВНЕЗАПНО модули перестаются искаться в указанных путях?
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: Сборка на x86_64

Сообщение Padre_Mortius » 10.05.2011 00:50:44

если модули перестают искаться, то либо с /etc/fpc.cfg, либо с настройками Lazarus что-то твориться... у меня на x86_64 стоит Lazarus 0.9.30 и fpc 2.4.2... проблем вроде нет
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Сборка на x86_64

Сообщение Logo » 10.05.2011 05:07:16

У Вас FPC и модули к нему откомпилированы под x86_64?
Если да, то после make наберите:
make PP=/путь к fpc/ppcx64
Если нет, то берите исходники фрипаскаля и сначала откомпилируйте их.
Если Вы уж начали самостоятельные сборки, то лучше берите из SVN:

Код: Выделить всё
#!/bin/bash
cd ~
echo
echo
echo "***************************************"
echo "**                                   **"
echo "**            FPC 2.4.x              **"
echo "**                                   **"
echo "***************************************"
svn checkout http://svn.freepascal.org/svn/fpc/tags/release_2_4_2_rc1 Develop/fpc-2.4.2_rc1
echo
echo "***************************************"
echo "**                                   **"
echo "**         Lazarus 0.9.30            **"
echo "**                                   **"
echo "***************************************"
#svn checkout http://svn2.freepascal.org/svn/lazarus/branches/fixes_0_9_28 lazarus28
svn checkout http://svn.freepascal.org/svn/lazarus/branches/fixes_0_9_30 Develop/lazarus30
echo


Код: Выделить всё
#!/bin/bash
cd ~
echo
echo
echo "***************************************"
echo "**                                   **"
echo "**            FPC 2.5.x              **"
echo "**                                   **"
echo "***************************************"
svn checkout http://svn.freepascal.org/svn/fpc/trunk Develop/fpc-2.5.1



Код: Выделить всё
#/bin/bash
echo "################################################################################"
echo "###                                                                          ###"
echo "###                      Lazarus 0.9.31 - trunk                              ###"
echo "###                                                                          ###"
echo "################################################################################"
cd ~
svn co http://svn.freepascal.org/svn/lazarus/trunk Develop/lazarus31


Я думаю понятно с кодом? Создайте файлы с соответствующим кодом и дайте им атрибут выполняемых, чтобы не набирать постоянно строку.

Рекомендую пользоваться Lazarus 0.9.31 и fpc-2.5.1 они уже довольно хорошо отлажены и имеют лучшие характеристики.

Добавлено спустя 5 минут 45 секунд:
У Вас после инсталяции ФПС, он будет в каталоге /usr/local/lib/fpc/2.5.1 (или ../2.4.2)
Зайдите в этот каталог и выполните команду
Код: Выделить всё
./samplecfg /usr/local/lib/fpc/2.5.1 /etc

Этот скриптик создаст вам правильный fpc.cfg файл в /etc
Logo
постоялец
 
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Re: Сборка на x86_64

Сообщение Brainenjii » 10.05.2011 23:00:51

Наша песня хороша - начинай сначала...
Сначала поставил fpc из бинарников - sudo rpm -i fpc-2.4.2-1.x86_64.rpm
FPC скачал - svn co http://svn.freepascal.org/svn/fpc/tags/release_2_4_2/ /home/Brainenjii/fpc
Собрал - cd /home/Brainenjii/fpc;make OS_TARGET=linux CPU_TARGET=x86_64 all
Установил - cd /home/Brainenjii/fpc;sudo make OS_TARGET=linux CPU_TARGET=x86_64 install
Удалил бинарный fpc - sudo rpm -e fpc
На всякий пожарный подтёр за ним - sudo rm /etc/fpc.cfg*;sudo rm /usr/lib64/fpc;
Создаю fpc.cfg - cd /usr/local/lib/fpc/2.4.2;sudo ./samplecfg /usr/local/lib/fpc/2.4.2/ /etc/
На данном этапе всё хорошо, уверен, что лазарь соберётся и всё будет шоколадно... Но...
cd /home/Brainenjii/fpc;make OS_TARGET=linux CPU_TARGET=i386 all
Brainenjii@blinux:~/fpc> make OS_TARGET=linux CPU_TARGET=i386 all
make compiler_cycle RELEASE=1
make[1]: Entering directory `/home/Brainenjii/fpc'
make -C compiler cycle
make[2]: Entering directory `/home/Brainenjii/fpc/compiler'
Makefile:3482: *** recipe commences before first target. Stop.
make[2]: Leaving directory `/home/Brainenjii/fpc/compiler'
make[1]: *** [compiler_cycle] Error 2
make[1]: Leaving directory `/home/Brainenjii/fpc'
make: *** [build-stamp.i386-linux] Error 2
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: Сборка на x86_64

Сообщение Logo » 10.05.2011 23:32:40

Почему Вы Лазарус собираете из директории FPC?
Зайдите в директорий с исходниками Lazarus и выполните команду:
Код: Выделить всё
make all PP=/usr/local/lib/fpc/2.4.2/ppcx64
#может понадобится сначала выполнить:
#make clean PP=/usr/local/lib/fpc/2.4.2/ppcx64

У Вас компилятор уже 64 разряда и под линукс, поэтому указывать ОС и Проц ненужно, но если вы будете компилировать под другую платформу, то тогда нужно. Освоите это, - сможете и под ARM компилировать.

Бинарик из RPM можно не удалять, ведь в Lazarus всеравно нужно прописать путь к компилятору, там и указываете какой нужно, - родной или кроскомпилятор под другую платформу.

Добавлено спустя 4 минуты 55 секунд:
Если пугает большой код, то откомпилируйте FPC:
Код: Выделить всё
make clean all PP=/usr/local/lib/fpc/2.4.2/ppcx64 COMPILER_OPTIONS="-XX -Xs -CX -O3"

Lazarus тоже можно так откомпилировать. Ноесли хотите рыть исходники, то тогда не указывайте эти параметры.
Logo
постоялец
 
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Re: Сборка на x86_64

Сообщение Brainenjii » 10.05.2011 23:45:51

К сборке лазарус'а я в этом посте даже не приступал... Но собирается он прекрасно и даже работает... Проблема - со сборкой именно fpc под i386.
Видимо не совсем понятно объяснил - у меня как раз x86_64 машина. Но на этой платформе я не могу завести UIB и free-tds. Поэтому мне нужно организовать кросс-компиляциюпод i386. Подо что собран лазарус меня особо-то и не интересует (лучше бы, конечно, x86_64). Сейчас ещё разок попробовал:
make clean PP=/usr/local/lib/fpc/2.4.2/ppcx64;make all PP=/usr/local/lib/fpc/2.4.2/ppcx64; sudo make install PP=/usr/local/lib/fpc/2.4.2/ppcx64; - всё прошло, всё работает.
Далее:
make clean PP=/usr/local/lib/fpc/2.4.2/ppcx64;make all PP=/usr/local/lib/fpc/2.4.2/ppcx64 CPU_TARGET=i386
Brainenjii@blinux:~/fpc> make all CPU_TARGET=i386 PP=/usr/local/lib/fpc/2.4.2/ppcx64
make compiler_cycle RELEASE=1
make[1]: Entering directory `/home/Brainenjii/fpc'
make -C compiler cycle
make[2]: Entering directory `/home/Brainenjii/fpc/compiler'
Makefile:3482: *** recipe commences before first target. Stop.
make[2]: Leaving directory `/home/Brainenjii/fpc/compiler'
make[1]: *** [compiler_cycle] Error 2
make[1]: Leaving directory `/home/Brainenjii/fpc'
make: *** [build-stamp.i386-linux] Error 2
Brainenjii@blinux:~/fpc>


Добавлено спустя 2 минуты 42 секунды:
Да, кстати, кросскомпиляция у меня уже была. И всё даже распрекрасно работало... До вчерашнего дня... Что могло измениться - ума не приложу! Правда до, собственно, вчерашнего же дня я Lazarus и пересобирать не пробовал - всё ж работало... Давно уже стараюсь не ставить новые пакеты в лазаря - как-то издавно с опаской к этому отношусь - проще путь указать в настройках проекта до интересного - все-равно только консольные приложеньица пишу последнее время... Тут решил поставить новый пакет - и на тебе - второй день не могу дома поработать спокойно - одни нервы и расстройства Изображение
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: Сборка на x86_64

Сообщение Logo » 11.05.2011 02:12:40

Понял, может после обновления какого-то binutils не понравился. Попробуйте просто бросить файл ppc386 в /usr/local/lib/fpc/2.4.2/ и выполнить компиляцию make clen all PP=/usr/local/lib/fpc/2.4.2/ppc386 оно должно откомпилироваться и дальше просто указавать PP=/usr/local/lib/fpc/2.4.2/ppc386

Файл я могу выслать, в зипе 717Кб. Сюда прикрепить не могу, больше 256 не позволяет.

Я так понял, у вас Ubuntu, я не знаю как там бинутилс именуется, но к нему нужно путь указывать, может PATH его не имеет.
Logo
постоялец
 
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 41

Рейтинг@Mail.ru