[РЕШЕНО] компиляция uuidlib на Centos 6.5 x86_64

Основная задача - миграция базы Террасофт
с 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

Собственно компиляция проходит без ошибок:

# make
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/

подключаюсь, проверяю:

/opt/firebird/bin/isql -u SYSDBA -p masterkey
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, закидываю, переподключаюсь - все работает:

SQL> select  '{' || UPPER(GUID_CREATE()) || '}' from rdb$database;

CONCATENATION
======================================
{5E156798-1DD2-11B2-9A2E-E9DF669CF946}

Внимание вопрос - что не так с скомпиленной мной библиотечкой ? Нужно решить проблему т.к. мне нужно скомпилировать еще одну с другим функционалом.

Нравится

2 комментария

Спасибо за Ваше обращение. Мы зарегистрировали его в Службе технической поддержки и назначили специалиста, который сможет Вас компетентно проконсультировать по данному вопросу

Бака, бака, бака >_<

# 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 - заработало. Всем спасибо.

Показать все комментарии