DBD :: Oracle: сделать ошибку: необъявлено (первое использование в этой функции) - PullRequest
0 голосов
/ 06 сентября 2018

Я пытался установить DBD :: Oracle в Linux 7.4 (x86_64 x86_64 x86_64 GNU / Linux) в течение последних 2 дней. Это стало препятствием для одного из важнейших проектов. Я перепробовал все возможные способы, которые только мог придумать, но безуспешно.

Пока что я сделал следующее:

1) Успешно установлен DBI.

2) разархивировано instantclient-sdk-linux.x64-12.2.0.1.0.zip, instantclient-basic-linux.x64-12.2.0.1.0.zip, instantclient-sqlplus-linux.x64-12.2 .0.1.0.zip в каталоге / home / netauto / oracle / и установите LD_LIBRARY_PATH и ORACLE_HOME, чтобы они указывали на / home / netauto / oracle / instantclient_12_2

instantclient_12_2]# ls -ltr /home/netauto/oracle/instantclient_12_2

-rwxrwxr-x. 1 netauto netauto 124771800 Jan 26  2017 libociei.so
-rwxrwxr-x. 1 netauto netauto     57272 Jan 26  2017 genezi
-rwxrwxr-x. 1 netauto netauto    240476 Jan 26  2017 uidrvci
-rwxrwxr-x. 1 netauto netauto    116563 Jan 26  2017 liboramysql12.so
-r-xr-xr-x. 1 netauto netauto    380996 Jan 26  2017 libons.so
-r-xr-xr-x. 1 netauto netauto   6568149 Jan 26  2017 libnnz12.so
-rw-rw-r--. 1 netauto netauto       363 Jan 26  2017 BASIC_README
-rwxrwxr-x. 1 netauto netauto     44220 Jan 26  2017 adrci
-rw-rw-r--. 1 netauto netauto     74230 Jan 26  2017 xstreams.jar
-r--r--r--. 1 netauto netauto   4036257 Jan 26  2017 ojdbc8.jar
-r-xr-xr-x. 1 netauto netauto    158543 Jan 26  2017 libocijdbc12.so
-rwxrwxr-x. 1 netauto netauto   2218687 Jan 26  2017 libocci.so.12.1
-r-xr-xr-x. 1 netauto netauto    539065 Jan 26  2017 libmql1.so
-r-xr-xr-x. 1 netauto netauto   2981501 Jan 26  2017 libipc1.so
-rwxrwxr-x. 1 netauto netauto  71638263 Jan 26  2017 libclntsh.so.12.1
-rwxrwxr-x. 1 netauto netauto   8033199 Jan 26  2017 libclntshcore.so.12.1
-rw-rw-r--. 1 netauto netauto       367 Jan 26  2017 SQLPLUS_README
-r-xr-xr-x. 1 netauto netauto     22751 Jan 26  2017 sqlplus
-r-xr-xr-x. 1 netauto netauto   1559466 Jan 26  2017 libsqlplus.so
-r-xr-xr-x. 1 netauto netauto   1641005 Jan 26  2017 libsqlplusic.so
-r-xr-xr-x. 1 netauto netauto       342 Jan 26  2017 glogin.sql drwxrwxr-x. 5 netauto netauto      4096 Jan 26  2017 sdk 
 lrwxrwxrwx. 1 netauto netauto        64 Sep  4 13:07 libclntsh.so -> /home/netauto/oracle/instantclient_12_2/libclntsh.so.12.1

Заголовочные файлы:

instantclient_12_2]# ls /home/netauto/oracle/instantclient_12_2/sdk/include
-r-xr-xr-x. 1 netauto netauto  24778 Jan 26  2017 occiObjects.h
-r-xr-xr-x. 1 netauto netauto   2115 Jan 26  2017 occi.h
-r-xr-xr-x. 1 netauto netauto  39934 Jan 26  2017 occiData.h
-r-xr-xr-x. 1 netauto netauto  72561 Jan 26  2017 occiControl.h
-r-xr-xr-x. 1 netauto netauto  35604 Jan 26  2017 occiCommon.h
-r-xr-xr-x. 1 netauto netauto 194752 Jan 26  2017 oci.h
-r-xr-xr-x. 1 netauto netauto   8953 Jan 26  2017 ociextp.h
-r-xr-xr-x. 1 netauto netauto  11782 Jan 26  2017 ocidfn.h
-r-xr-xr-x. 1 netauto netauto   4048 Jan 26  2017 ocidem.h
-r-xr-xr-x. 1 netauto netauto  43001 Jan 26  2017 ocidef.h
-r-xr-xr-x. 1 netauto netauto   6204 Jan 26  2017 ociapr.h
-r-xr-xr-x. 1 netauto netauto 438428 Jan 26  2017 ociap.h
-r-xr-xr-x. 1 netauto netauto  10361 Jan 26  2017 oci8dp.h
-r-xr-xr-x. 1 netauto netauto   7203 Jan 26  2017 oci1.h
-r-xr-xr-x. 1 netauto netauto  11649 Jan 26  2017 occiAQ.h
-r-xr-xr-x. 1 netauto netauto   9892 Jan 26  2017 xa.h
-r-xr-xr-x. 1 netauto netauto 123766 Jan 26  2017 ort.h
-r-xr-xr-x. 1 netauto netauto  42866 Jan 26  2017 oro.h
-r-xr-xr-x. 1 netauto netauto 158261 Jan 26  2017 orl.h
-r-xr-xr-x. 1 netauto netauto 102775 Jan 26  2017 ori.h
-r-xr-xr-x. 1 netauto netauto  15083 Jan 26  2017 orid.h
-r-xr-xr-x. 1 netauto netauto   6540 Jan 26  2017 oratypes.h
-r-xr-xr-x. 1 netauto netauto  32313 Jan 26  2017 odci.h
-r-xr-xr-x. 1 netauto netauto 111273 Jan 26  2017 ocixstream.h
-r-xr-xr-x. 1 netauto netauto   8138 Jan 26  2017 ocixmldb.h
-r-xr-xr-x. 1 netauto netauto   6494 Jan 26  2017 ocikpr.h
-r-xr-xr-x. 1 netauto netauto  78862 Jan 26  2017 nzt.h
-r-xr-xr-x. 1 netauto netauto  37493 Jan 26  2017 nzerror.h
-r-xr-xr-x. 1 netauto netauto  44851 Jan 26  2017 ldap.h

perl MakeFile.PL прошел нормально

 DBD-Oracle-1.23]# perl Makefile.PL
Using DBI 1.641 (for perl 5.016003 on x86_64-linux) installed in /home/netauto/perl_modules/lib/auto/DBI/

Configuring DBD::Oracle for perl 5.016003 on linux (x86_64-linux)

Remember to actually *READ* the README file! Especially if you have any problems.

Installing on a linux, Ver#3.10
Using Oracle in /home/netauto/oracle/instantclient_12_2
DEFINE _SQLPLUS_RELEASE = "1202000100" (CHAR)
Oracle version 12.2.0.1 (12.2)
Looks like an Instant Client installation, okay
Your LD_LIBRARY_PATH env var is set to '/home/netauto/oracle/instantclient_12_2/'
Oracle sysliblist:
Found header files in /home/netauto/oracle/instantclient_12_2/sdk/include.

Checking for functioning wait.ph


System: perl5.016003 linux ord12-p-noobprimt-firmsmt-01 3.10.0-693.11.6.el7.x86_64 #1 smp wed jan 3 18:59:47 pst 2018 x86_64 x86_64 x86_64 gnulinux
Compiler:   cc -O2 -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
Linker:     /bin/ld
Sysliblist:
Linking with -lclntsh.


WARNING: If you have problems you may need to rebuild perl with threading enabled.
LD_RUN_PATH=/home/netauto/oracle/instantclient_12_2
Using DBD::Oracle 1.23.
Using DBD::Oracle 1.23.
Using DBI 1.641 (for perl 5.016003 on x86_64-linux) installed in /home/netauto/perl_modules/lib/auto/DBI/
Generating a Unix-style Makefile
Writing Makefile for DBD::Oracle
Writing MYMETA.yml and MYMETA.json

***  If you have problems...
     read all the log printed above, and the README and README.help.txt files.
     (Of course, you have read README by now anyway, haven't you?)

Но, выдать ошибку команды

 DBD-Oracle-1.23]# make
Skip blib/lib/DBD/Oracle.pm (unchanged)
Skip blib/lib/oraperl.ph (unchanged)
Skip blib/arch/auto/DBD/Oracle/dbdimp.h (unchanged)
Skip blib/arch/auto/DBD/Oracle/ocitrace.h (unchanged)
Skip blib/lib/Oraperl.pm (unchanged)
Skip blib/arch/auto/DBD/Oracle/Oracle.h (unchanged)
Skip blib/lib/DBD/Oracle/Object.pm (unchanged)
Skip blib/lib/DBD/Oracle/GetInfo.pm (unchanged)
cp mk.pm blib/arch/auto/DBD/Oracle/mk.pm
Running Mkbootstrap for Oracle ()
chmod 644 "Oracle.bs"
"/home/netauto/program_files/perl/perl-5.16.3/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- Oracle.bs blib/arch/auto/DBD/Oracle/Oracle.bs 644
cc -c  -I/home/netauto/oracle/instantclient_12_2/sdk/include -I/home/netauto/perl_modules/lib/auto/DBI -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2   -DVERSION=\"1.23\" -DXS_VERSION=\"1.23\" -fPIC "-I/home/netauto/program_files/perl/perl-5.16.3/lib/5.16.3/x86_64-linux/CORE"  -Wall -Wno-comment -DUTF8_SUPPORT -DNEW_OCI_INIT -DORA_OCI_VERSION=\"12.2.0.1\" Oracle.c
Oracle.xs: In function ‘XS_DBD__Oracle__st_ora_bind_param_inout_array’:
Oracle.xs:175:6: error: ‘sv_yes’ undeclared (first use in this function)
   ? &sv_yes : &sv_no;
      ^
Oracle.xs:175:6: note: each undeclared identifier is reported only once for each function it appears in
Oracle.xs:175:16: error: ‘sv_no’ undeclared (first use in this function)
   ? &sv_yes : &sv_no;
                ^
Oracle.c: In function ‘XS_DBD__Oracle__st_ora_execute_array’:
Oracle.c:1679:14: error: ‘sv_undef’ undeclared (first use in this function)
      cols = &sv_undef;
              ^
Oracle.xs: In function ‘XS_DBD__Oracle__st_cancel’:
Oracle.xs:253:41: error: ‘sv_yes’ undeclared (first use in this function)
  ST(0) = dbd_st_cancel(sth, imp_sth) ? &sv_yes : &sv_no;
                                         ^
Oracle.xs:253:51: error: ‘sv_no’ undeclared (first use in this function)
  ST(0) = dbd_st_cancel(sth, imp_sth) ? &sv_yes : &sv_no;
                                                   ^
Oracle.xs: In function ‘XS_DBD__Oracle__db_reauthenticate’:
Oracle.xs:289:59: error: ‘sv_yes’ undeclared (first use in this function)
  ST(0) = ora_db_reauthenticate(dbh, imp_dbh, uid, pwd) ? &sv_yes : &sv_no;
                                                           ^
Oracle.xs:289:69: error: ‘sv_no’ undeclared (first use in this function)
  ST(0) = ora_db_reauthenticate(dbh, imp_dbh, uid, pwd) ? &sv_yes : &sv_no;
                                                                     ^
Oracle.xs: In function ‘XS_DBD__Oracle__db_ora_lob_write’:
Oracle.xs:317:11: error: ‘sv_undef’ undeclared (first use in this function)
  ST(0) = &sv_undef;
           ^
Oracle.xs:342:11: error: ‘sv_yes’ undeclared (first use in this function)
  ST(0) = &sv_yes;
           ^
Oracle.xs: In function ‘XS_DBD__Oracle__db_ora_lob_append’:
Oracle.xs:373:11: error: ‘sv_undef’ undeclared (first use in this function)
  ST(0) = &sv_undef;
           ^
Oracle.xs:396:14: error: ‘sv_yes’ undeclared (first use in this function)
     ST(0) = &sv_yes;
              ^
Oracle.xs: In function ‘XS_DBD__Oracle__db_ora_lob_read’:
Oracle.xs:430:13: error: ‘sv_undef’ undeclared (first use in this function)
  dest_sv = &sv_undef;
             ^
Oracle.xs: In function ‘XS_DBD__Oracle__db_ora_lob_trim’:
Oracle.xs:464:11: error: ‘sv_undef’ undeclared (first use in this function)
  ST(0) = &sv_undef;
           ^
Oracle.xs:467:11: error: ‘sv_yes’ undeclared (first use in this function)
  ST(0) = &sv_yes;
           ^
Oracle.xs: In function ‘XS_DBD__Oracle__db_ora_lob_length’:
Oracle.xs:482:11: error: ‘sv_undef’ undeclared (first use in this function)
  ST(0) = &sv_undef;
           ^
Oracle.xs: In function ‘XS_DBD__Oracle__db_ora_lob_chunk_size’:
Oracle.xs:501:12: error: ‘sv_undef’ undeclared (first use in this function)
   ST(0) = &sv_undef;
            ^
make: *** [Oracle.o] Error 1

Мне кажется, что он не может найти какой-либо заголовочный файл, но какой файл и какой путь мне нужно добавить в LD_LIBRARY_PATH (если необходимо), я не знаю. Я действительно не могу разобраться с этим.

Пожалуйста, дайте мне знать, что я здесь делаю неправильно.

Спасибо, Prabir

1 Ответ

0 голосов
/ 07 сентября 2018

версии 1.23 DBD::Oracle - девять лет, и sv_undef теперь называется PL_sv_undef

Взгляните на Старые CPAN-модули с sv_undef . Это с 2003 года, но все еще может быть актуальным

Это сводится к бегу

perl Makefile.PL POLLUTE=1

для добавления старых определений sv_undef, sv_yes и sv_no в сборку

...