ElektronSDK 1.0.6 for linux looks like it's missing symbolic links for ETA shared libraries

ElektronSDK 1.0.6 for linux looks like it's missing symbolic links for ETA shared libraries

Best Answer

  • Joe,

    You may have needed to run the "LinuxSoLink" script included with the binary pack. It creates the symlinks you describe.

Answers

  • After installing the ElektronSDK version 1.0.6 on linux and linking an executable using the shared libraries, the resulting image cannot find the referenced .so files.
    The missing .so files are NOT due to an improperly set LD_LIBRARY_PATH nor a missing R[UN]PATH set in the executable.

    The problem is due to the .so files having been created with -Wl,soname

    The link line uses the names of the files located in the
    /Elektron-SDK1.0.6.linux/Eta/Libs/RHEL6_64_GCC444/Optimized/Shared
    directory

    Linking with the parameters:
    -llibrssl-eta3.0.2.L1
    -llibrsslVA-eta3.0.2.L1
    -llibrsslVACache-eta3.0.2.L1

    Results in the successful completion of the link and the resolution of all the symbols.

    attempting to run the resulting image howver references .so files NOT specified in the link:
    librssl.so.6, librsslVA.so.7, and librsslVACache.so.2

    This is because the .so files were created with a parameter to the linker that instructed it to override the filename of the .so and use an internally stored name (SONAME) in the executable produced by the linker.

    To correct the problem, symbolic links need to be generated for the SONAME to the file name on the disk e.g.

    ln -s librssl-eta3.0.2.L1.so librssl.so.6

    Further, a version independent name should be generated to that the link line is not tied to a particular executable version:

    ln -s librssl.so.6 librssl.so

    This would allow linking with simply:

    -llibrssl -llibrsslVA -llibrsslVACache

    It's possible that these links were created when the version was built but the craetion of the archive for distribution excluded files that were symbolic links

  • I found the file: Eta/LinuxSoLink
    You may want to add a line to the README that the script needs to be run