Как я могу просто преобразовать файл ESQL/C в файл C? (Встроенный файл SQL / C в файл C)?

Я работаю над проектом миграции. Мне нужно конвертировать файлы ESQL/C с расширением.ec в файл c на gcc. Я знаю, что программа ESQL/C создаст файл.c. Но как я могу получить это?

К вашему сведению: я работаю на сервере IBM Informix.

1 ответ

Решение

TL;DR - для Informix .ec файл скомпилирован с esql Программа (скрипт), вы можете использовать -e опция "Только предварительная обработка, без компиляции или связывания".

esql -e esqlcode.ec

Это производит esqlcode.c от esqlcode.ec, (Не обращайте внимания на мой предыдущий комментарий о "достаточно новой"; вы не будете использовать версию, которая недостаточно свежа - моя память снова выходит из строя.)

esql Сценарий традиционно вышел из промежуточного .c файл валяется. Мой ESQL/C make правила все удаляют сгенерированные .c файл как отдельный шаг после компиляции:

.ec.o:
    ${ESQL} ${ESQLFLAGS} -c $*.ec
    ${RM_F} $*.c

с соответствующими определениями суффиксов, макросов и т. д.

esql команда

Использование Informix esql Компилятор (скрипт), вы можете запустить его без опций, чтобы получить подобное сообщение (постарайтесь не бояться: на самом деле используются две команды):

Usage: esql [-e] [-thread] [-glu] [esqlcargs] [-cc] [otherargs] [-o outfile]
            [-cp] [-onlycp] [-np] [-nup]
            [-libs] esqlfile.ec [othersrc.c...] [otherobj.o...] [-lyourlib...]

        -e         Preprocess only, no compilation or linking
        -thread    Multithread support
        -glu       Enable GLU (GLS for Unicode)
        -esqlcargs: esqlc arguments (-g, -G, -nln, -Ipathname, -nowarn, -V, -ansi,
                                    -xopen, -local, -log, -EDname, -EUname,
                                    -icheck
        -cc        Arguments after cc go to c compiler only
        otherargs: Other arguments are passed to cc
        -o         Next argument is program name
        -libs      Display the list of libraries used by esql at link time.
        -cp        Run C preprocessor before esqlc
        -onlycp    Run only the C preprocessor, no esqlc, compilation or linking
        -np        No protection of SQL keywords in SQL statements
        -nup       No unprotection of SQL keywords, forces -onlycp


Usage: esqlc [-thread] [-gG] [-nln] [-Ipathname] [-nowarn] [-V] [-ansi]
             [-static] [-xopen] [-local] [-log file] [-EDname[=val]] [-EUname]
             [-icheck] [-keepccomment] [-version] esqlfile.ec
         -thread     Multithread support
         -g          Number every line (debugging purposes)
         -G          No line number (debugging purposes; same as -nln)
         -nln        No line number (debugging purposes; same as -G)
         -Ipathname  Add pathname to include file search path
         -nowarn     Do not print warnings
         -static     Link with static libraries
         -keepccomment Allow C style comments in SQL statements.
         -version    Displays build and version information.
         -V          Print preprocessor version information
         -ansi       Perform ANSI checking
         -xopen      Perform XOPEN checking
         -local      Make cursor/statement ids local to the file
         -log file   Log error and warning messages in file
         -EDname     Define specified preprocessor name flag
          [=val]     and set it equal to 'val'
         -EUname     Undefine specified preprocessor name flag
         -icheck     Check for indicator variables

Использование для esqlc для "настоящего" препроцессора, $INFORMIXDIR/lib/esqlc, Использование для esql для esql сам скрипт - это то, что вы в первую очередь используете. esqlcargs в esql использование те, которые перечислены для esqlc - они передаются через скрипт в программу.

Этот вывод взят из ESQL/C 4.10, связанного с Informix 12.10. Я не буду утомлять вас историей номеров версий ESQL/C.

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