Похоже, что скрипт c4gl
устанавливает параметр команды GCC -fwritable-strings
, но ваш компилятор C (очевидно cc
, но это может быть ссылка на GCC) не распознает его.
В зависимости от того, есть ли у вас GCC или нет, есть разные способы исправить это. GCC 5.x (подтверждено с GCC 5.3.0) и более поздние версии не поддерживают эту опцию. Linux долгое время застрял на GCC 4.x, но, наконец, переходит на более поздние версии GCC. Итак, если вы используете GCC 5.x или более позднюю версию (используйте cc --version
или gcc --version
, чтобы узнать, какую версию вы используете), вам нужно будет отредактировать скрипт c4gl
(после создания его резервной копии), чтобы удалить параметр .
Тем не менее, также есть шанс, что это было важно, и код в библиотеке I4GL иногда пытается изменить строковые литералы, и это приведет к сбою программы. В этот момент вы застряли с попыткой сообщить о проблеме в службу технической поддержки IBM Informix (HCL), предполагая, что у вас есть поддержка, или с понижением до версии 4.x компилятора GCC.
Я немного боялся, что это может быть поверхностной проблемой. Если код не будет работать на RHEL 7.x, об этом нужно знать Informix (IBM, HCL) — действительно, я обсужу это со своим руководством, но также помогает подтверждение клиента.
Это сценарий, который я хочу скомпилировать: MAIN DISPLAY "hello" END MAIN Это простой сценарий. Спасибо за вашу помощь
Я узнаю «привет, мир» в I4GL. Проблема в том, что версия I4GL, которую вы пытаетесь использовать, не работает на платформе, на которой вы пытаетесь ее использовать. Возможно, у вас не установлена последняя версия I4GL — какую версию вы используете? Также возможно, что последняя версия I4GOL для RHEL была выпущена для более старой версии RHEL и просто несовместима с используемой вами версией. Не могли бы вы предоставить информацию о версии — I4GL 7.32.FCx (что такое x и есть ли после нее другие буквы)? И версия RH, которую вы используете.
Это все версии, которые я использую: -RHEL: 8.2 - Динамический сервер Informix: 14.10 FC4W1 -4GL: 7.32.UC2 Но я не могу изменить версию, потому что у нас другое приложение не может работать в новой версии.
Спасибо — это мне поможет.
Меня интересует, что вы используете 7.32.UC2 — это 32-разрядная версия I4GL. Я ожидаю, что будет 64-битная версия, такая как 7.32.FCx. Но я не уверен, что это решит проблему с версией библиотеки C++.
Я не могу установить 4GL версии 64 бит 7.32.FCx (для меня x равно 4). Ошибка: невозможно выполнить двоичный файл: ошибка формата Exec
«Ошибка формата exec» странная — обычно это означает, что двоичный файл имеет совершенно неправильный формат для машины. У вас есть договор на техподдержку? С такими вещами служба технической поддержки обычно справляется довольно быстро.
Спрашиваю в поддержке он говорит нужно сделать обновление версии
Номер этой ошибки -4604, а в поддержке кодов ошибок не нахожу
Глядя на диаграмму жизненного цикла продукта (cursor-distribution.de/en/ibm-software/support-informix/…), текущая версия I4GL — 7.51, а не 7.32. Мой мозг ржавеет. 7.32, вероятно, был портирован на RHEL4 или около того. В любом случае, вам необходимо перейти на I4GL версии 7.51 (поскольку 7.50 также не поддерживается).
Привет, Джонатан, да, я это знаю, но мы не можем обновить версию, потому что у нас есть другое приложение, несовместимое с новой версией.
Теперь я меняю версию красной шапки на 7.9 и компилятор на 4.8, и когда я хочу скомпилировать, тоже не работает Ошибка: cc: ошибка: нераспознанный параметр командной строки ‘-fwritable-strings’
Параметр -fwritable-strings
был удален из GCC некоторое время назад. Ваша установка больше не может использоваться — вам нужно либо вернуться к версиям, которые у вас были до начала процесса обновления, либо вам нужно обновить I4GL.
Так что решение - обновление версии до новой версии. У нас нет другого решения.
Ты застрял между молотом и наковальней. Номинально один из вариантов — вернуться к установке, которая работала последние 15 лет или около того, и продолжать ее использовать. Тогда у вас не будет проблем из-за изменений, но у вас есть 15-летний накопленный риск. Другой вариант — использовать поддерживаемую и поддерживаемую конфигурацию I4GL, перестраивая то, что нуждается в перестроении. Однако, если есть код, который доказал свою работоспособность в I4GL 7.32, но доказал свою неудачу в 7.51, то (а) вам необходимо определить причину сбоя и (б) вы находитесь в неудовлетворительной ситуации.
В целом I4GL 7.32 и I4GL 7.51 должны работать одинаково. Если есть проблема, ее можно легко идентифицировать, возможно, с известным решением. Но эти проблемы должны быть тайными и могут включать в себя интерфейсы кода C, нуждающиеся в обновлении. Но без информации трудно быть уверенным.
Эй, спасибо за ваш ответ, но когда я редактирую c4gl, я обнаруживаю другие проблемы. Одной из таких проблем является замена libstdc++-8.3.1 на libstdc++-3.2-1.i386.rpm. Но при этом версия не может быть установлена, потому что redHat 7 по умолчанию устанавливает версию libstdc++-8.3.1, и я не могу ее удалить.