Почему компилятор Informix 4GL жалуется на неизвестную опцию -fwritable-strings?

Я новичок в Informix, и когда я хочу скомпилировать и отладить программу в Informix 4GL, но не могу.

Это код:

MAIN 
   DISPLAY "HELLO"
END MAIN

И это проблема:

cc:errors: option "-fwritable-strings" non reconnue sur la ligne de commande, aviez-vous l'intention d'utiliser "-writ-string" 4GL
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
197
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Похоже, что скрипт 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.

Эй, спасибо за ваш ответ, но когда я редактирую c4gl, я обнаруживаю другие проблемы. Одной из таких проблем является замена libstdc++-8.3.1 на libstdc++-3.2-1.i386.rpm. Но при этом версия не может быть установлена, потому что redHat 7 по умолчанию устанавливает версию libstdc++-8.3.1, и я не могу ее удалить.

Ez-zaouia Badr 18.12.2020 15:35

Я немного боялся, что это может быть поверхностной проблемой. Если код не будет работать на RHEL 7.x, об этом нужно знать Informix (IBM, HCL) — действительно, я обсужу это со своим руководством, но также помогает подтверждение клиента.

Jonathan Leffler 18.12.2020 15:50

Это сценарий, который я хочу скомпилировать: MAIN DISPLAY "hello" END MAIN Это простой сценарий. Спасибо за вашу помощь

Ez-zaouia Badr 18.12.2020 15:55

Я узнаю «привет, мир» в I4GL. Проблема в том, что версия I4GL, которую вы пытаетесь использовать, не работает на платформе, на которой вы пытаетесь ее использовать. Возможно, у вас не установлена ​​последняя версия I4GL — какую версию вы используете? Также возможно, что последняя версия I4GOL для RHEL была выпущена для более старой версии RHEL и просто несовместима с используемой вами версией. Не могли бы вы предоставить информацию о версии — I4GL 7.32.FCx (что такое x и есть ли после нее другие буквы)? И версия RH, которую вы используете.

Jonathan Leffler 18.12.2020 16:11

Это все версии, которые я использую: -RHEL: 8.2 - Динамический сервер Informix: 14.10 FC4W1 -4GL: 7.32.UC2 Но я не могу изменить версию, потому что у нас другое приложение не может работать в новой версии.

Ez-zaouia Badr 18.12.2020 16:14

Спасибо — это мне поможет.

Jonathan Leffler 18.12.2020 16:17

Меня интересует, что вы используете 7.32.UC2 — это 32-разрядная версия I4GL. Я ожидаю, что будет 64-битная версия, такая как 7.32.FCx. Но я не уверен, что это решит проблему с версией библиотеки C++.

Jonathan Leffler 18.12.2020 16:44

Я не могу установить 4GL версии 64 бит 7.32.FCx (для меня x равно 4). Ошибка: невозможно выполнить двоичный файл: ошибка формата Exec

Ez-zaouia Badr 18.12.2020 17:05

«Ошибка формата exec» странная — обычно это означает, что двоичный файл имеет совершенно неправильный формат для машины. У вас есть договор на техподдержку? С такими вещами служба технической поддержки обычно справляется довольно быстро.

Jonathan Leffler 18.12.2020 17:09

Спрашиваю в поддержке он говорит нужно сделать обновление версии

Ez-zaouia Badr 18.12.2020 17:14

Номер этой ошибки -4604, а в поддержке кодов ошибок не нахожу

Ez-zaouia Badr 18.12.2020 17:31

Глядя на диаграмму жизненного цикла продукта (cursor-distribution.de/en/ibm-software/support-informix/…), текущая версия I4GL — 7.51, а не 7.32. Мой мозг ржавеет. 7.32, вероятно, был портирован на RHEL4 или около того. В любом случае, вам необходимо перейти на I4GL версии 7.51 (поскольку 7.50 также не поддерживается).

Jonathan Leffler 18.12.2020 17:50

Привет, Джонатан, да, я это знаю, но мы не можем обновить версию, потому что у нас есть другое приложение, несовместимое с новой версией.

Ez-zaouia Badr 21.12.2020 08:36

Теперь я меняю версию красной шапки на 7.9 и компилятор на 4.8, и когда я хочу скомпилировать, тоже не работает Ошибка: cc: ошибка: нераспознанный параметр командной строки ‘-fwritable-strings’

Ez-zaouia Badr 21.12.2020 16:41

Параметр -fwritable-strings был удален из GCC некоторое время назад. Ваша установка больше не может использоваться — вам нужно либо вернуться к версиям, которые у вас были до начала процесса обновления, либо вам нужно обновить I4GL.

Jonathan Leffler 21.12.2020 16:48

Так что решение - обновление версии до новой версии. У нас нет другого решения.

Ez-zaouia Badr 21.12.2020 17:01

Ты застрял между молотом и наковальней. Номинально один из вариантов — вернуться к установке, которая работала последние 15 лет или около того, и продолжать ее использовать. Тогда у вас не будет проблем из-за изменений, но у вас есть 15-летний накопленный риск. Другой вариант — использовать поддерживаемую и поддерживаемую конфигурацию I4GL, перестраивая то, что нуждается в перестроении. Однако, если есть код, который доказал свою работоспособность в I4GL 7.32, но доказал свою неудачу в 7.51, то (а) вам необходимо определить причину сбоя и (б) вы находитесь в неудовлетворительной ситуации.

Jonathan Leffler 21.12.2020 20:32

В целом I4GL 7.32 и I4GL 7.51 должны работать одинаково. Если есть проблема, ее можно легко идентифицировать, возможно, с известным решением. Но эти проблемы должны быть тайными и могут включать в себя интерфейсы кода C, нуждающиеся в обновлении. Но без информации трудно быть уверенным.

Jonathan Leffler 21.12.2020 20:33

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