FPC на FreeBSD/amd64

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

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

Ответить
Dmitry
новенький
Сообщения: 52
Зарегистрирован: 05.07.2005 08:53:06

Сообщение Dmitry »

Купили себе новый сервер на Оптеронах. Стала задача, перенести программу на него.
Для начала пробовал скомпилить простенькую программу hello world.

Выдало следующую фигню.
# fpc hello.pas
Free Pascal Compiler version 2.0.0 [2005/05/15] for i386
Copyright © 1993-2005 by Florian Klaempfl
Target OS: FreeBSD/ELF for i386
Compiling hello.pas
Linking hello
/usr/bin/ld: skipping incompatible /usr/local/lib/fpc/2.0.0/units/i386-freebsd/rtl/prt0.o when searching for /usr/local/lib/fpc/2.0.0/units/i386-freebsd/rtl/prt0.o
/usr/bin/ld: cannot find /usr/local/lib/fpc/2.0.0/units/i386-freebsd/rtl/prt0.o
hello.pas(5,1) Error: Error while linking
Error: /usr/local/bin/ppc386 returned an error exitcode (normal if you did not specifiy a source file to be compiled)

Вычитал в mail-листах FreeBSD, что, оказывается, на машине с x86_64 можно только запускать elf32-i386-freebsd приложения, но не компилировать их. Странная такая совместимость. :(

Понял, что мне нужно перекомпилить rtl библиотеки, а собственно загрузчик prt0.o под x86_64
Стянул исходники. Начал компилить

#gmake build CPU_TARGET=x86_64 CROSSCOMPILE=yes
....
gmake[5]: Entering directory `/usr/home/mitya/fpc/fpc/rtl/freebsd'
/bin/mkdir -p /usr/home/mitya/fpc/fpc/rtl/units/x86_64-freebsd
x86_64-freebsd-as -o /usr/home/mitya/fpc/fpc/rtl/units/x86_64-freebsd/prt0.o x86_64/prt0.as
gmake[5]: x86_64-freebsd-as: Command not found

Да, нету у меня такого ассемблера. Ладно, подумал я, смонтирую ка я NFS и буду компилить на одной машине, а запускать на другой.

Запускается, только теперь кричит:
#./auth
/usr/libexec/ld-elf.so.1: Shared object "libmysqlclient.so.14" not found, required by "auth"

Странно. Смотрел /var/run/ld-elf.so.hints - там директория /usr/local/lib/mysql присутствует. Положил файл libmysqlclient.so.14 в один каталог с программой - все равно его не видит. Даже не знаю что и делать.

Помогите кто чем может.
Dmitry
новенький
Сообщения: 52
Зарегистрирован: 05.07.2005 08:53:06

Сообщение Dmitry »

Временное решение проблемы сделал копированием 32-х разрядной версии библиотеки libmysqlclient.so.14 в папку /usr/lib32
Все заработало. Но хотелось бы узнать мнение остальных людей по поводу переноса FPC на 64-х битную платформу.
cranium
постоялец
Сообщения: 143
Зарегистрирован: 08.05.2005 03:59:45
Откуда: Санкт-Петербург

Сообщение cranium »

Пробовал 64 битный FreePascal для Linux... Пользую FedoreCore 3 ни каких особенностей не заметил. Писал демона принимающего строки через сокет и складывающего их в файл. Потом этот же код без проблем откомпилировался на AspLinux 10.0... На предмет FreeBSD ни чего не скожу....
Dmitry
новенький
Сообщения: 52
Зарегистрирован: 05.07.2005 08:53:06

Сообщение Dmitry »

А где взять этот 64-х битный FreePascal ?
cranium
постоялец
Сообщения: 143
Зарегистрирован: 08.05.2005 03:59:45
Откуда: Санкт-Петербург

Сообщение cranium »

<a href='http://www.freepascal.org/down-x86_64-linux-russia.html' target='_blank'>Linux AMD_64</a>
Это правда для Linuxa
Dmitry
новенький
Сообщения: 52
Зарегистрирован: 05.07.2005 08:53:06

Сообщение Dmitry »

cranium писал(а): <a href='http://www.freepascal.org/down-x86_64-linux-russia.html' target='_blank'>Linux AMD_64</a>
Это правда для Linuxa

Так отож.

Поделитесь, пожалуйста, опытом кроссплатформенной компиляции.
ushakov
новенький
Сообщения: 51
Зарегистрирован: 18.05.2005 11:15:48
Откуда: Украина, Киев

Сообщение ushakov »

Читайте файл compiler/README (в исходниках). В нем как раз описывается как собирать freepascal под разные ОС и для разных процессоров.
Ответить