1

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

4

1 回答 1

3

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或创建/usr/informix指向 CSDK 安装位置的符号链接)。您还需要添加$INFORMIXDIR/bin到您的 PATH 中。你现在可以编译了:

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

    esql -c esqlc_source.ec
    

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

  • 考虑编译.c(C 源代码)文件,该文件也使用 ESQL/C 标头和esql脚本。这将自动将头文件的正确目录传递给 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以获取额外的目录,或从将自动获取的位置(例如,/usr/lib/usr/lib64,或可能/usr/local/lib)创建到 Informix 库的符号链接到安装库的位置。

您至少需要添加:

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

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

然后,您应该能够运行该程序。使用ldd program将在您正确设置时通知您。

于 2017-05-19T23:59:21.470 回答