Назад | Перейти на главную страницу

32-разрядный клиент Oracle 12c и прямое перемещение GOT R_386_GOT32 против lxecerr

При попытке установить 32-разрядный клиент Oracle 12c (12.1 или 12.2) в Oracle Linux 7.3 или 7.5 выдает ошибку при компоновке статических библиотек:

INFO: Start output from spawned process:
INFO: ----------------------------------
INFO:

INFO: /u01/app/oracle/product/12.2.0_client32/bin/genclntsh

INFO: /bin/ld: /u01/app/oracle/product/12.2.0_client32/lib/libnls12.a(lxecg2e.o): direct GOT relocation R_386_GOT32 against `lxecerr' without base register can not be used when making a shared object
/bin/ld: final link failed: Bad value

INFO: collect2: error: ld returned 1 exit status

INFO: genclntsh: Failed to link libclntshcore.so.12.1

INFO: make: *** [client_sharedlib] Error 1

32-битная ошибка клиента

Не очень конкретно, я нашел только одну ссылку в Oracle KM Doc ID 2246237.1.

Причина и решение проблемы были:

ПРИЧИНА

SLES 12 SP2 поставляется с binutils 2.26, что нарушает совместимость для некоторых ссылок на разделяемые библиотеки.

РЕШЕНИЕ 01) Обновите пакет binutils до версии binutils-2.26.1-9.15.1 или новее.

Но на самом деле у меня на сервере binutils-2.27-27.base.el7.x86_64 .

Решение - ниже.

Обходной путь - понизить рейтинг binutils:

jhartman@sms.jhartman.pl:/home/jhartman$ sudo yum downgrade binutils*
Loaded plugins: ulninfo
Resolving Dependencies
--> Running transaction check
---> Package binutils.x86_64 0:2.25.1-32.base.el7_4.2 will be a downgrade
---> Package binutils.x86_64 0:2.27-27.base.el7 will be erased
---> Package binutils-devel.x86_64 0:2.25.1-32.base.el7_4.2 will be a downgrade
---> Package binutils-devel.x86_64 0:2.27-27.base.el7 will be erased
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================================================================================================================================================================================================================
 Package                                                            Arch                                                       Version                                                                     Repository                                                      Size
================================================================================================================================================================================================================================================================================
Downgrading:
 binutils                                                           x86_64                                                     2.25.1-32.base.el7_4.2                                                      ol7_latest                                                     5.4 M
 binutils-devel                                                     x86_64                                                     2.25.1-32.base.el7_4.2                                                      ol7_latest                                                     845 k

Transaction Summary

После этого библиотеки можно скомпилировать и связать:

oracle$ export ORACLE_HOME=/u01/app/oracle/product/12.2.0_client32
oracle$ /u01/app/oracle/product/12.2.0_client32/bin/genclntsh
oracle$

Я верю, что после завершения установки binutils можно снова обновить до последней версии (но не забывайте об этой проблеме в случае установки RSU).

PS: Я поднял SR 3-17356002141: Ошибка при установке 32-разрядного клиента Oracle (прямое перемещение GOT R_386_GOT32 против ipp_zcalloc)