c - 如何在 Linux 平台上编译和运行 ESQL/C 程序?

标签 c compilation informix embedded-sql

我检查了IBM官方网站上的ESQL/C编程指南。我没有找到编译和运行的确切命令。我需要安装任何软件包才能运行吗?谁能告诉我在 Ubuntu 中运行这些命令的命令?

最佳答案

ESQL/C(C 中的嵌入式 SQL)使用 C 代码作为大部分代码,但使用特殊标记(Informix ESQL/C 中的 $EXEC SQL) > 在标准和 Informix ESQL/C 中)来指示 SQL 语句需要在何处进行预处理才能转换为一系列适当的 C 库函数调用和 C 变量定义等。esql 脚本是编译器自动将 Informix ESQL/C 源代码首先转换为 C,然后转换为目标代码和可执行文件(选项主要与 C 编译器的选项相同,其中大部分未更改地传递给 C 编译器)。

您需要安装 Informix ClientSDK (CSDK) 才能编译 ESQL/C 程序。它是在安装服务器时默认安装的,因此,如果您所在的机器上有可用的 Informix 服务器(如果它也有可用的 C 编译器和开发环境),那么您很可能没问题。它也可以作为单独的独立产品提供,如果您的计算机上没有并且不想要 Informix 服务器,您可以安装该产品。如果服务器是本地的,测试有很多优点(访问速度更快,损坏生产系统的危险较小等)。

假设您已经安装了 CSDK,您需要设置环境变量 INFORMIXDIR 来指向软件的安装位置(除非您选择将其安装在 /usr/informix 中) > 或创建一个指向 CSDK 安装位置的符号链接(symbolic link) /usr/informix)。您还需要将 $INFORMIXDIR/bin 添加到您的 PATH 中。您现在可以编译了:

  • 使用 esql 命令将 .ec(ESQL/C 源)文件编译为对象:

    esql -c esqlc_source.ec
    

    根据需要添加其他 C 编译器选项。请注意,-gesql 脚本拦截,您必须努力将其传递给 C 编译器。

  • 考虑编译也使用 ESQL/C header 和 esql 脚本的 .c(C 源代码)文件。这将自动将正确的头文件目录传递给 C 编译器。您更有可能会使用:

    ${CC} -c c_source.c -I${INFORMIXDIR}/incl/esql
    
  • 对于链接,请使用 esql 脚本来完成。它将向编译器提供正确的库(和目标文件),并将其作为链接器调用:

    esql -o program c_source.o esqlc_source.o
    

    您可以照常添加其他库和库目录。

你已经编译了程序;现在你需要运行它。您很可能不会自动找到这些库。您需要考虑向 LD_LIBRARY_PATH 添加一些目录,或者修改 /etc/ld.so.conf 以获取额外的目录,或者创建到 Informix 库的符号链接(symbolic link)从自动获取的位置(例如 /usr/lib/usr/lib64,或者 /usr/local/lib )到库的安装位置。

您至少需要添加:

  • $INFORMIXDIR/lib
  • $INFORMIXDIR/lib/esql

在某些情况下,您可能还需要添加在 $INFORMIXDIR/lib 下找到的其他库目录,但通常不需要。

然后您应该能够运行该程序。使用ldd 程序会让您知道设置是否正确。

关于c - 如何在 Linux 平台上编译和运行 ESQL/C 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44079726/

相关文章:

java - 如何使用 informix.jvp.dbapplet.impl.JVPClassLoader 从类路径加载资源?

c++ - Doxygen - 如何在不生成图表的情况下生成文本调用关系结果

c# - Visual Studio 2010 创建编译代码的应用程序

c - 预期的 ;之前)C 中的标记错误

SQL - WHERE 聚合> 1

sql - 插入 Informix 表或更新(如果存在)

c - PostgreSQL自定义C函数导入失败: "sprintf_chk: symbol not found"

c - 53 :6: warning: conflicting types for function

c - 在链表中使用 malloc 的问题

java - Groovyc *.groovy 奇怪的行为