in reply to Solaris problem or compile options

It has so many missing symbols that seem to be mostly Perl related.

The Perl related symbols aren't really a problem. They're just an artifact of ldd trying symbol resolution in isolated context.  In real life circumstances, the shared object will be loaded by the Perl binary, which should provide all the symbols (if it's the right version).

What looks suspicious, though, is the i2d_ASN1_HEADER symbol — it should probably come from the openssl library.  And I think this is the very problem, i.e. that your X509.so hasn't been linked against the openssl library.  The reason could be that you don't have the openssl development libs installed (as opposed to the runtime libs).

Replies are listed 'Best First'.
Re^2: Solaris problem or compile options
by ckevinj (Initiate) on Feb 03, 2012 at 23:01 UTC

    Thanks, that helps narrow it down.

    But I I believe I have the openssl dev files. It shows the openssldev package installed and the files included in the package are what I would typically expect, and are in a location that I was referencing....
    ... Pathname: /opt/csw/include/openssl/x509.h Pathname: /opt/csw/include/openssl/x509_vfy.h Pathname: /opt/csw/include/openssl/x509v3.h Pathname: /opt/csw/lib/libcrypto.a Pathname: /opt/csw/lib/libcrypto.so Pathname: /opt/csw/lib/libssl.a Pathname: /opt/csw/lib/libssl.so ... Pathname: /opt/csw/lib/sparcv9/libcrypto.so Pathname: /opt/csw/lib/sparcv9/libssl.a Pathname: /opt/csw/lib/sparcv9/libssl.so ...

    that is I'm assuming dev files would be include dir and the libraries. Or is there something else?

    Are the symbols found from includes or shared objects?

      ... Or is there something else?

      No, that looks ok.  But a fact is that X509.so wasn't linked with libssl/libcrypto.  This command should have mentioned -lssl and -lcrypto, together with the correct search path, such as -L/opt/csw/lib.  But it didn't:

      gcc -mcpu=v9 -m64 -G -L/usr/lib/sparcv9 -fstack-protector -G X509.o +-o blib/arch/auto/Crypt/OpenSSL/X509/X509.so \ \

      The most typical reason for this is missing dev libs (which we've excluded by now), but occasionally more subtle problems lead to libs not being detected by MakeMaker, and if MakeMaker thinks a lib is not there, it doesn't link against it...

      Anyhow, the most practical solution would probably be to just re-run the above link command manually (from the build directory), appending the link instructions for the libs in question (you can get rid of those line-continuation backslashes).  If that goes well, just continue with make test && make install.

      gcc -mcpu=v9 -m64 -G -L/usr/lib/sparcv9 -fstack-protector -G X509.o +-o blib/arch/auto/Crypt/OpenSSL/X509/X509.so -L/opt/csw/lib -lssl -lc +rypto
        That worked!
        gcc -mpcu=v9 -m64 -G -L/opt/csw/lib/sparcv9 -fstack-protector -G X509. +o -o blib/arch/auto/Crypt/OpenSSL/X509/X509.so -L/opt/csw/lib/sparcv9 + -lssl -lcrypto
        You are a maester, Eliya!