编译OCILB OCI包装器库时出现的问题

编译OCILB OCI包装器库时出现的问题,c,oracle,oracle-call-interface,C,Oracle,Oracle Call Interface,我正在尝试在ocilib3.8.1/demo中编译demo。成功安装了ocilib库后,我编译了下面的演示源代码conn.c: #include "ocilib.h" int main(void) { OCI_Connection *cn; if (!OCI_Initialize(NULL, NULL, OCI_ENV_DEFAULT)) return EXIT_FAILURE; cn = OCI_ConnectionCreate("db", "us

我正在尝试在
ocilib3.8.1/demo
中编译demo。成功安装了
ocilib
库后,我编译了下面的演示源代码conn.c:

#include "ocilib.h"

int main(void)
{
    OCI_Connection *cn;

    if (!OCI_Initialize(NULL, NULL, OCI_ENV_DEFAULT))
        return EXIT_FAILURE;

    cn = OCI_ConnectionCreate("db", "usr", "pwd", OCI_SESSION_DEFAULT);

    printf("Server major    version : %i\n",   OCI_GetServerMajorVersion(cn));
    printf("Server minor    version : %i\n",   OCI_GetServerMinorVersion(cn));
    printf("Server revision version : %i\n\n", OCI_GetServerRevisionVersion(cn));
    printf("Connection      version : %i\n\n", OCI_GetVersionConnection(cn));

    OCI_Cleanup();

    return EXIT_SUCCESS;
}
使用gcc编译:

$gcc -Wall conn.c -o conn.o -I/usr/local/include \
    -DOCI_IMPORT_LINKAGE -DOCI_CHARSET_ANSI
错误:

$ gcc -Wall conn.c -o conn.o -I/usr/local/include \
    -DOCI_IMPORT_LINKAGE -DOCI_CHARSET_ANSI
/tmp/ccMgFQri.o: In function `main':
conn.c:(.text+0x26): undefined reference to `OCI_Initialize'
conn.c:(.text+0x4f): undefined reference to `OCI_ConnectionCreate'
conn.c:(.text+0x63): undefined reference to `OCI_GetServerMajorVersion'
conn.c:(.text+0x82): undefined reference to `OCI_GetServerMinorVersion'
conn.c:(.text+0xa1): undefined reference to `OCI_GetServerRevisionVersion'
conn.c:(.text+0xc0): undefined reference to `OCI_GetVersionConnection'
conn.c:(.text+0xd6): undefined reference to `OCI_Cleanup'
collect2: ld returned 1 exit status
我使用的是redhat el5,gcc版本3.4.6 20060404(redhat 3.4.6-4),即时客户端版本10.2.0.5.0


谢谢你的帮助。我是linux编程新手。

你必须链接到ocilib


将“-locilib”添加到命令行:)

您必须链接到ocilib


将“-locilib”添加到命令行:)

可能还需要
-L
到(我猜)
/usr/local/lib
才能找到库。而且不需要
-o conn.o
参数?gcc-DOCI\u IMPORT\u LINKAGE-DOCI\u CHARSET\u ANSI-L$ORACLE\u HOME/lib-lclntsh-L/usr/local/lib-locilib conn.c-o conn可能还需要
-L
到(我猜)
/usr/local/lib
才能找到库。而且不需要
-o conn.o
参数?gcc-DOCI\u IMPORT\u LINKAGE-DOCI\u CHARSET\u ANSI-L$ORACLE\u HOME/lib-lclntsh-L/usr/local/lib-locilib conn.c-o conn