Проблемы с опцией компилятора GCC Linux DB2 COBOL

Компиляция/связывание кода COBOL на RHEL 8.6, который компилируется нормально, но затем, когда он пытается связать, я получаю сообщение об ошибке с одной из переменных: cob2 -F//etc/cob2.cfg -v <cobolprog.cbl> -L/lib64 -ldb2 -I/include/cobol_a/ -q"size(16384K) -o cobolprog

Вывод /usr/bin/ld: пропуск несовместимых lib64/libdb2.so при поиске -ldb2 /usr/bin/ld: не удается найти -ldb2 Если я удалю -ldb2, я получу «неопределенную ссылку на SQLGSTRT», «SQLGALOC и т. д.».

Когда я пробую это с lib32 и -ldb2, я не вижу проблем?

Я пытался использовать -q64 в строке cmd, но, видимо, это не поддерживается в Linux.

Db2level Информационные токены: "DB2 v11.5.0.0", "s1906101300", "DYN1906101300AMD64" и пакет исправлений "0". Продукт установлен в "/opt/IBM/db2/V11.5"

Cob2 -V Программа cob2 Версия 1.1.0 Построен Пн Сен 27 10:39:30 2021

Пробовал 32-битный, который отлично компилирует кобол, но теперь, похоже, возникла проблема со связыванием статической библиотеки, которая мне нужна: /usr/bin/ld: /usr/lib/gcc/x86_64-redhat-linux/8/../../../../lib/Scrtl.0(.text+0x1c): неразрешимое перемещение R_386_GOTOFF против символ '__libc_csu_fini'

Пожалуйста, отредактируйте свой вопрос, добавив важные ФАКТЫ, в частности, какая у вас версия клиента db2? (т. е. вставьте обычный текстовый вывод своей команды db2level в свой вопрос). также ваша версия gcc.

mao 15.02.2023 17:35

Версия клиента db2 — V11.5.

Ian 15.02.2023 20:02

Не используйте комментарии для добавления фактов, потому что комментарии недоступны для поиска. От вас нужно два факта. (1) Пожалуйста, отредактируйте свой вопрос, указав полный текстовый вывод команды db2level (он находится в каталоге bin клиента db2 на том же хосте, где вы видите сообщение). Недостаточно написать только название версии. (2) пожалуйста, покажите простой текстовый вывод команды cobc -V. Поймите, что разрядность набора инструментов cobol должна соответствовать разрядности и архитектуре библиотеки .so.

mao 16.02.2023 10:05

Похоже, что в выводе db2level отсутствует необходимая информация (разрядность и архитектура). Вы получаете сообщение от ld, потому что разрядность/архитектура предоставленной библиотеки не соответствует запрошенной, поэтому она пропускает библиотеку. Отдельно я вижу, что вы используете «fixpack 0» версии 11.5, что всегда является ошибкой, поэтому вам следует как можно скорее обновиться до текущего пакета исправлений (на февраль 2023 г. это версия 11.5.8.0, доступная через ibm.com/ поддержка/страницы/узел/6830623

mao 16.02.2023 16:01

Метка gcc неверна, вы можете отказаться от нее. Как отмечено в реальном ответе: IBM COBOL на x86 - это только 32-битный продукт, если вы хотите, чтобы 64-битный переключился на GnuCOBOL, компилируя с «cobc -std = ibm».

Simon Sobisch 17.02.2023 07:59

В настоящее время пробую 32-битную версию, которая отлично компилирует кобол, но теперь, похоже, возникла проблема со связыванием статической библиотеки, которая мне нужна:

Ian 17.02.2023 11:33

/usr/bin/ld: /usr/lib/gcc/x86_64-redhat-linux/8/../../../../lib/Scrtl.0(.‌​text+0x1c): неразрешимый R_386_GOTOFF перемещение по символу '__libc_csu_fini'

Ian 17.02.2023 11:37

Не злоупотребляйте вопросами stackoverflow, добавляя новый другой симптом к ранее отвеченному вопросу, который имеет совершенно другой симптом. Вместо этого создайте новый вопрос и поместите все соответствующие детали в этот новый вопрос.

mao 17.02.2023 12:43
Ускорьте разработку веб-приложений Laravel с помощью этих бесплатных стартовых наборов
Ускорьте разработку веб-приложений Laravel с помощью этих бесплатных стартовых наборов
Laravel - это мощный PHP-фреймворк, используемый для создания масштабируемых и надежных веб-приложений. Одним из преимуществ Laravel является его...
Что такое двойные вопросительные знаки (??) в JavaScript?
Что такое двойные вопросительные знаки (??) в JavaScript?
Как безопасно обрабатывать неопределенные и нулевые значения в коде с помощью Nullish Coalescing
Создание ресурсов API Laravel: Советы по производительности и масштабируемости
Создание ресурсов API Laravel: Советы по производительности и масштабируемости
Создание API-ресурса Laravel может быть непростой задачей. Она требует глубокого понимания возможностей Laravel и лучших практик, чтобы обеспечить...
Как сделать компонент справочного центра с помощью TailwindCSS
Как сделать компонент справочного центра с помощью TailwindCSS
Справочный центр - это веб-сайт, где клиенты могут найти ответы на свои вопросы и решения своих проблем. Созданный для решения многих распространенных...
Асинхронная передача данных с помощью sendBeacon в JavaScript
Асинхронная передача данных с помощью sendBeacon в JavaScript
В современных веб-приложениях отправка данных из JavaScript на стороне клиента на сервер является распространенной задачей. Одним из популярных...
Как подобрать выигрышные акции с помощью анализа и визуализации на Python
Как подобрать выигрышные акции с помощью анализа и визуализации на Python
Отказ от ответственности: Эта статья предназначена только для демонстрации и не должна использоваться в качестве инвестиционного совета.
0
8
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Похоже, вы используете IBM COBOL для Linux на платформе x86 версии 1.1.

Согласно документации IBM по этой ссылке параметр компилятора ADDR указывает, следует ли создавать 32-разрядный или 64-разрядный объектный файл.

Кроме того, поскольку вы используете версию 1.1 (в настоящее время доступна версия на февраль 2023 г.), в документации также есть это конкретное соответствующее примечание:

Примечание. Опции ADDR(64) и -q64 в настоящее время не поддерживаются. компилятор принимает и игнорирует эти параметры и по умолчанию использует ADDR(32).

Это означает, что ваш объектный файл 32-битный, но вы пытаетесь связать (ld) с 64-битными библиотеками Db2, и, следовательно, ld пропускает несовместимую библиотеку с сообщением, которое вы видите. Вместо этого вам следует связать 32-разрядные библиотеки Db2, они находятся в каталоге lib32 клиента Db2, поэтому укажите это в параметрах командной строки.

Другие вопросы по теме