сбой компиляции, так как отсутствует библиотека для программы Gnucobol DB2 - PullRequest
0 голосов
/ 08 июля 2019

Gnucobol - db2 program.sqb, предварительная обработка выполнена.Сбой компиляции program.cbl -

DB2Express-C, работающий внутри контейнера, и GnuCobol, установленный в ВМ

Предварительная обработка DB2 успешно Выполнена предварительная обработка для сервера DB2, работающего внутри контейнера

$ db2 "prep SQLCOBPGM.sqb bindfile target ANSI_COBOL"
$ ls
db2inst1  isus  log  SQLCOBPGM.bnd  `enter code here`SQLCOBPGM.cbl  SQLCOBPGM.sqb  sqllib

Сбой компиляции. Для компиляции библиотеки .cbl & sql копируются на виртуальную машину Ubuntu с установленным GnuCobol

# cobc -static SQLCOBPGM.cbl -L / db2home / db2inst1 / sqllib /lib64 -ldb2 -x -O / usr / bin / ld: не удается найти -ldb2 collect2: ошибка: ld вернул 1 состояние выхода

Ошибка компилятора cobc как / usr / bin / ld:не могу найти -ldb2 Мы пропускаем некоторые библиотеки?

Ответы [ 2 ]

0 голосов
/ 09 июля 2019

Вы указали и библиотеку для связи (db2), и путь к библиотеке для поиска, что выглядит неплохо. В 99% ошибка состоит в том, что либо указанный путь не содержит файл libdb2 (я предлагаю добавить вывод ls /db2home/db2inst1/sqllib/lib64/libdb2* к вопросу), либо библиотека не соответствует архитектуре компоновщика (cobc и ld равны 64 битовые исполняемые файлы, не так ли?) или исполняющий пользователь не имеет прав на чтение библиотек / прав на выполнение на своем пути.

0 голосов
/ 08 июля 2019

Убедитесь, что каталог, который вы указываете для библиотек:

  • присутствует

  • читается пользователем, выполняющим компиляцию

  • содержит все необходимые библиотеки (более 100 из них), включая libd2.so.1 и т. Д.

Таким образом, установка Db2-express должна выбрать соответствующую опцию, чтобы добавить артефакты для разработки (включая библиотеки / shared-объекты и т. Д.).

У меня работает на Linux с cobc. Я также гарантирую, что LD_LIBRARY_PATH включает этот каталог, чтобы разрешить запуск результирующих скомпилированных программ.

...