/user/perl_modules/lib/perl5/x86_64-linux/Devel/auto/Devel/NYTProf/NYT
+Prof.so
Which appears to be called using this line in /user/perl_modules/lib/perl5/x86_64-linux/Devel/NYTProf/Core.pm:
XSLoader::load('Devel::NYTProf', $VERSION);
Based on a cursory search this appears to be a way to include a library of separate C/C++ functions and access them from within perl. Is that correct? If so, then that probably explains why I've never run into this error until now - other modules I've installed and referenced from /user/perl_modules/lib/perl5 didn't have dynamic libraries.
Having said that, based on my C/C++ experience linker errors such as "undefined symbol" occur when the executable doesn't have a path to the referenced dynamic library, which can be checked using the "ldd" command. If I run "ldd /usr/bin/perl", it returns the following:
> ldd /usr/bin/perl
linux-vdso.so.1 => (0x00007ffc0b140000)
libperl.so => /usr/lib64/perl5/CORE/libperl.so (0x00007f74bbaa5000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f74bb88c000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f74bb672000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f74bb46e000)
libm.so.6 => /lib64/libm.so.6 (0x00007f74bb16c000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f74baf35000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007f74bad32000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f74bab16000)
libc.so.6 => /lib64/libc.so.6 (0x00007f74ba749000)
/lib64/ld-linux-x86-64.so.2 (0x00007f74bbe33000)
libfreebl3.so => /lib64/libfreebl3.so (0x00007f74ba546000)
whereas "ldd /tool/bin/perl" returns the following:
> ldd /tool/bin/perl
linux-vdso.so.1 => (0x00007ffeeebb7000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f3a2cd0f000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f3a2cb0b000)
libm.so.6 => /lib64/libm.so.6 (0x00007f3a2c809000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f3a2c5d2000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007f3a2c002000)
libc.so.6 => /lib64/libc.so.6 (0x00007f3a2c002000)
/lib64/ld-llinux-x86-64.so.2 (0x00007f3a2cf29000)
libfreebl3.so => /lib64/libfreebl3.so (0x00007f3a2bdff000)
Note that neither perl installation has /user/perl_modules/lib/perl5/x86_64-linux/Devel/auto/Devel/NYTProf/ in its list of ldd paths, so how was /tool/bin/perl able to find NYTProf.so but /usr/bin/perl was not?
Also the ldd paths for a given perl installation are completely separate from the paths contained in @INC when that perl executable is run, correct?
|