i trying run executable file - satscanbatch, executable of satscan software - on remote machine terminal.
here error get
/usr/lib64/libstdc++.so.6: version 'glibcxx_3.4.15' not found
the problem similar these: /usr/lib/libstdc++.so.6: version `glibcxx_3.4.15' not found or how fix: /usr/lib/libstdc++.so.6: version `glibcxx_3.4.15' not found or /usr/lib64/libstdc++.so.6: version `glibcxx_3.4.15' not found
what different in case not have admin rights, cannot add libraries in usr/lib file. downloaded libstdc++.6.0.15 in remote repository, , want use execute file.
here possibilities tried
i) modify environment variable ld_library_path or ld_run_path or ld_preload path of libstdc++.so.6.0.15. --> did not change anything
ii) include library in static way
gcc satscanbatch -static-libstdc++
--> -static option not recognized, guess remote machine's gcc version old.
iii) try link file additional library:
gcc satscanbatch -l /path/library -l stdc++
or similarly
gcc satscanbatch -wl,-rpath,path/to/library
--> error
/usr/bin/ld: warning: cannot create .eh_frame_hdr section, --eh-frame-hdr ignored. /usr/bin/ld: error in satscanbatch64(.eh_frame); no .eh_frame_hdr table created. /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../lib64/crt1.o: in function _start: (.text+0x20): undefined reference "main" collect2: ld returned 1 exit status
iv) use patchelf link file , library --> cannot install patchelf because no admin rights
thank suggestion !
modify environment variable ld_library_path or ld_run_path or ld_preload path of libstdc++.so.6.0.15. --> did not change anything
what did try?
ld_library_path
should set directory containing new libstdc++.so.6
not the file itself, , need export
environment variable it's available child processes, not shell. , need symlink libstdc++.so.6
libstdc++.so.6.0.15
because dynamic loader going name, not libstdc++.so.6.0.15
ld_run_path
used during linking bake path executable. nothing @ run-time when trying run executable. if use need set directory contain libstdc++.so.6
file on remote machine. again, needs set directory, not path of file.
ld_preload
different again, , not want. use force particular shared library loaded before else when executable runs. can used pre-load newer libstdc++ it's better use ld_library_path
set path @ run-time or ld_run_path
set path @ link-time.
try link file additional library:
the commands showed nonsense, don't include objects in link, you're trying create executable out of nothing. that's why error undefined reference "main"
for scenario recommend using ld_library_path
.