Как я могу просто преобразовать файл 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.