Основная задача - миграция базы Террасофт
с Firebird 2.0 openSUSE 11.2 x86_64
на Firebird 2.5 CentOS 6.5 x86_64
С Firebird знаком не очень глубоко, судя по интернетам миграция производится через бекап-рестор на версии 2.1 (которая и установлена в данный момент)
На данный момент имеется проблема с компляцией uuidlib:
Исходник uuidlib-1.6 взят из https://community.terrasoft.ua/forum/topic/5440 , libfbident.a заменен на приатаченный в той же теме
установлены зависимости compat-libstdc++-33 e2fsprogs-devel libuuid-devel openssl-devel
Собственно компиляция проходит без ошибок:
gcc -fPIC -w -I/usr/include -DLinux -c uuidlib.c -o uuidlib.o
gcc uuidlib.o -shared -L/usr/lib -L"." -luuid -lfbident -lssl -o uuidlib.so
# make utest
# ./utest
Testing create guid (old function, compatible to uuidlib)
Generated uuid: d1d8c8c0-142e-4431-8d22-3c311f4350d5
Testing create guid
Generated uuid: 61303071-5583-4B50-9D10-789A7A5CF707
Testing get mac
MAC address = bac9133155ee895a9fe7bbcb37c05a9e
закидываю uuidlib в /opt/firebird/UDF/
подключаюсь, проверяю:
Use CONNECT or CREATE DATABASE to specify a database
SQL> connect /data/firebird/test-fb-21.fdb;
Database: /data/firebird/test-fb-21.fdb, User: SYSDBA
SQL> show function GUID_CREATE;
Function GUID_CREATE:
Function library is uuidlib
Entry point is fn_guid_create
Returns CSTRING(36) CHARACTER SET NONE
SQL> select '{' || UPPER(GUID_CREATE()) || '}' from rdb$database;
Statement failed, SQLCODE = -104
invalid request BLR at offset 73
-function GUID_CREATE is not defined
-module name or entrypoint could not be found
Нахожу тему https://community.terrasoft.ru/forum/topic/2083 и беру из нее скомпиленный uuidlib, закидываю, переподключаюсь - все работает:
CONCATENATION
======================================
{5E156798-1DD2-11B2-9A2E-E9DF669CF946}
Внимание вопрос - что не так с скомпиленной мной библиотечкой ? Нужно решить проблему т.к. мне нужно скомпилировать еще одну с другим функционалом.
Нравится
Спасибо за Ваше обращение. Мы зарегистрировали его в Службе технической поддержки и назначили специалиста, который сможет Вас компетентно проконсультировать по данному вопросу
Бака, бака, бака >_<
# file ./uuidlib-from-forum ./uuidlib-from-forum: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, not stripped # file ./uuidlib-my ./uuidlib-my: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped
А у меня на x86_64 системе i686 фаерберд стоял ...
В общем поставил compat-libstdc++-33.x86_64 и FirebirdCS-2.1.5.18497-0.amd64.rpm - заработало. Всем спасибо.