I have a dynamic library libtest.so which depends on libcrypto.so (openssl) all of which in turn depend on libgcc_s.so.
Platform : Solaris sparc 5.10
Compiler : gcc 4.5.1
OpenSSL : 1.0.1e version
This libtest.so is the target library for an external procedure (extproc) in my database (Oracle 11g). I have copied all these libraries under a single folder and the same is mentioned in LD_LIBRARY_PATH (and LD_LIBRARY_PATH_64) in listener.ora as well as the oracle user's .profile. The path and libraries are given full public access permissions. Still oracle (ld) reports that it is not able to find the libcrypto.so saying "no such file or directory".
Since there are certain limits to the extent to which we can experiment on production setup (and getting the DBAs to restart listener each time), I moved my code (libtest.so's code files) into openssl and created a combined libcrypto.so and renamed it as libtest.so. But now the "ld" reports that libgcc_s.so is not available. I found an option to statically link libgcc_s.so using -static-libgcc flag. However this does not seem to work. Is there anything else that I can try out?
This might seem like an overkill for the problem at hand. But we face this issue in many production systems. Since the libraries are ours, copying them to Oracle/lib or any system lib directories or changing any properties at the system level will not be entertained. Best solution is to have a single fully contained library which will satisfy ld's hunger.
I have not found a method to do the above. However the issue got resolved by doing 'srvctl setenv listener -T "LD_LIBRARY_PATH=/my/path/"'. Since there are no replies yet to address the above issue (static linking), I am closing this question.