代码之家  ›  专栏  ›  技术社区  ›  Liju Mathew

为什么perl的dbd::db2在安装期间找不到dbivport.h?

  •  2
  • Liju Mathew  · 技术社区  · 15 年前

    我们使用perl实用程序从db2数据库转储数据。我们安装了dbi包,它也要求dbd包。

    我们没有根访问权限,当我们尝试安装dbd包时,出现以下错误:

        ERROR BUILDING DB2.pm
        [lijumathew@intblade03 DBD-DB2-1.78]$ make
        make[1]: Entering directory '/home/lijumathew/lperl/perlsrc/DBD-DB2-1.78/Constants'
        gcc -c  -I"/db2/db2tf1/sqllib/include" -D_REENTRANT -D_GNU_SOURCE -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -g -pipe -m32 -march=i386 -mtune=pentium4   -DVERSION=\"1.78\" -DXS_VERSION=\"1.78\" -fPIC "-I/usr/lib/perl5/5.8.5/i386-linux-thread-multi/CORE"   Constants.c
        Running Mkbootstrap for DBD::DB2::Constants ()
        chmod 644 Constants.bs
        rm -f ../blib/arch/auto/DBD/DB2/Constants/Constants.so
        gcc  -shared -L/usr/local/lib Constants.o  -o ../blib/arch/auto/DBD/DB2/Constants/Constants.so
        chmod 755 ../blib/arch/auto/DBD/DB2/Constants/Constants.so
        cp Constants.bs ../blib/arch/auto/DBD/DB2/Constants/Constants.bs
        chmod 644 ../blib/arch/auto/DBD/DB2/Constants/Constants.bs
        make[1]: Leaving directory `/home/lijumathew/lperl/perlsrc/DBD-DB2-1.78/Constants'
        gcc -c  -I"/db2/db2tf1/sqllib/include" -I"/usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/DBI" -I"/usr/lib/perl5/5.8.5/i386-linux-thread-multi/auto/DBI" -I"/usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi/auto/DBI" -I"/usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/DBI"  -D_REENTRANT -D_GNU_SOURCE -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -g -pipe -m32 -march=i386 -mtune=pentium4   -DVERSION=\"1.78\" -DXS_VERSION=\"1.78\" -fPIC "-I/usr/lib/perl5/5.8.5/i386-linux-thread-multi/CORE"   DB2.c
        In file included from DB2.h:22,
                         from DB2.xs:7:
        dbdimp.h:10:22: dbivport.h: No such file or directory
        make: *** [DB2.o] Error 1
    

    我们怎么解决这个问题?我们需要根访问来解决这个问题吗?

    2 回复  |  直到 15 年前
        1
  •  2
  •   Eric    15 年前

    您遇到了一个问题,因为大多数Perl模块(包括DBD-DB2)都不会被编写成安装到与DBI模块不同的位置,如果您尝试以非根的方式安装,就会出现这种情况。要使其正常工作,您需要向makefile添加这样的行:

    DEFINE =  -DDB2_CACHE_FIX  -I${DBI_INCL}
    

    并将dbi_incl设置为包含dbi头文件的目录。

        2
  •  1
  •   brian d foy    15 年前

    请看注册会计师论坛 DBD::DB2 make failed

    此外,如果您执行以下操作,则可以帮助您:

    Set the DB2 environment variable
    
       1. In C Shell setenv DB2_HOME $HOME/sqllib
       2. In Bash Shell export DB2_HOME=$HOME/sqllib
    

    安装模块:

    # perl Makefile.PL PREFIX=path
    # make
    # make test
    # make install
    

    但是,如果您能为我们提供Perl-V输出、您所在的平台和DBI版本,那么回答这个问题会很有帮助。

    推荐文章