Купили себе новый сервер на Оптеронах. Стала задача, перенести программу на него.
Для начала пробовал скомпилить простенькую программу 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 в один каталог с программой - все равно его не видит. Даже не знаю что и делать.
Помогите кто чем может.