The following is the output from perl Makefile.PL, run on RHEL 7.9, having previously set $ORACLE_HOME, $PATH (to include $ORACLE_HOME), and $LD_LIBRARY_PATH in order to find my copy of the Oracle instantclient. I am able to successfully build DBD::Oracle and run my code using it. However, it requires having $LD_LIBRARY_PATH set. I find that if I modify the generated Makefile to append the rpath setting to LDDLFLAGS, then I no longer require $LD_LIBRARY_PATH to be set to run my code.
Note the error for LIBS in the output below. It seems that the rpath setting is being added to LIBS instead of LDDLFLAGS.
Using DBI 1.627 (for perl 5.016003 on x86_64-linux-thread-multi) installed in /usr/lib64/perl5/vendor_perl/auto/DBI/
Configuring DBD::Oracle for perl 5.016003 on linux (x86_64-linux-thread-multi)
If you encounter any problem, a collection of troubleshooting
guides are available under lib/DBD/Oracle/Troubleshooting.
'DBD::Oracle::Troubleshooting' is the general troubleshooting
guide, while platform-specific troubleshooting hints
live in their labelled sub-document (e.g., Win32
hints are gathered in 'lib/DBD/Oracle/Troubleshooting/Win32.pod').
Installing on a linux, Ver#2.6
Using Oracle in /home/USER/TEST_DBD/instantclient_12_1
DEFINE _SQLPLUS_RELEASE = "1201000200" (CHAR)
Oracle Version 12.1.0.2 (12.1)
Looks like an Instant Client installation, okay
Your LD_LIBRARY_PATH env var is set to '/home/USER/TEST_DBD/instantclient'
Oracle sysliblist:
Found header files in /home/USER/TEST_DBD/instantclient_12_1/sdk/include.
client_version=12.1
DEFINE= -Wall -Wno-comment -DUTF8_SUPPORT -DORA_OCI_VERSION=\"12.1.0.2\" -DORA_OCI_102 -DORA_OCI_112
Checking for functioning wait.ph
System: perl5.016003 linux x86-vm-22.build.eng.bos.redhat.com 2.6.32-754.12.1.el6.x86_64 #1 smp thu mar 7 22:07:44 est 2019 x86_64 x86_64 x86_64 gnulinux
Compiler: gcc -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_REENTRANT -D_GNU_SOURCE -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.
Unrecognized argument in LIBS ignored: '-Wl,-rpath,/home/USER/TEST_DBD/instantclient_12_1'
LD_RUN_PATH=/home/USER/TEST_DBD/instantclient_12_1
Using DBD::Oracle 1.83.
Using DBD::Oracle 1.83.
Using DBI 1.627 (for perl 5.016003 on x86_64-linux-thread-multi) installed in /usr/lib64/perl5/vendor_perl/auto/DBI/
Writing Makefile for DBD::Oracle
The following is the output from
perl Makefile.PL
, run on RHEL 7.9, having previously set$ORACLE_HOME
,$PATH
(to include$ORACLE_HOME
), and$LD_LIBRARY_PATH
in order to find my copy of the Oracle instantclient. I am able to successfully build DBD::Oracle and run my code using it. However, it requires having$LD_LIBRARY_PATH
set. I find that if I modify the generatedMakefile
to append the rpath setting to LDDLFLAGS, then I no longer require$LD_LIBRARY_PATH
to be set to run my code.Note the error for
LIBS
in the output below. It seems that the rpath setting is being added to LIBS instead of LDDLFLAGS.