undefined reference to `rsslReserveBufferMemor' after upgrade to Real-Time-SDK-2.0.6.L1.linux

I have linked librssl.a and librsslVA.a. Is there any more lib that I need to link to. The last working version before the upgrade I had the following libraries: librsslData.a, librsslMessages.a, librsslTransport.a, librsslRDM.a, librsslReactor.a, librsslVACache.a, librsslVAUtil.a. Am I missing any libraries after upgrade to Real-Time-SDK-2.0.6.L1.linux??


I get the following error with upgrade after linking to librssl.a, libansi.a and librsslVA.a


undefined reference to `rsslReserveAlignedBufferMemory'

undefined reference to `rsslCopyBufferMemory'

undefined reference to `rsslReserveAlignedBufferMemory'

undefined reference to `rsslCopyBufferMemory'

undefined reference to `rsslReserveAlignedBufferMemory'

undefined reference to `rsslCopyBufferMemory


Best Answer

  • Jirapongse
    Answer ✓

    @vishal.anand

    You can try to put librssl.a after librsslVA.a.

    /usr/bin/gcc -fPIC -ggdb3 -g -o ./OL7_64_GCC482/Optimized//basicConsumer ./OL7_64_GCC482/Optimized//obj/basicConsumer.o ./OL7_64_GCC482/Optimized//obj/basicDirectoryHandler.o ./OL7_64_GCC482/Optimized//obj/basicDictionaryHandler.o ./OL7_64_GCC482/Optimized//obj/basicMsgHandler.o -m64  -D_SVID_SOURCE=1 -DCOMPILE_64BITS  -DLinux -Dx86_Linux_4X -Dx86_Linux_5X -DLinuxVersion=5 -D_iso_stdcpp_ -D_BSD_SOURCE=1 -D_POSIX_SOURCE=1 -D_POSIX_C_SOURCE=199506L -D_XOPEN_SOURCE=500  -D_POSIX_PTHREAD_SEMANTICS -D_GNU_SOURCE -I/opt/RTSDK-2.0.6.L1.linux.rrg/Cpp-C/Eta/Include/Codec/ -I/opt/RTSDK-2.0.6.L1.linux.rrg/Cpp-C/Eta/Include/Transport -I/opt/RTSDK-2.0.6.L1.linux.rrg/Cpp-C/Eta/Include/RDM -I/opt/RTSDK-2.0.6.L1.linux.rrg/Cpp-C/Eta/Include/Reactor -I/opt/RTSDK-2.0.6.L1.linux.rrg/Cpp-C/Eta/Include/Util -L/opt/RTSDK-2.0.6.L1.linux.rrg/Cpp-C/Eta/Libs/OL7_64_GCC482/Optimized/ -L/opt/RTSDK-2.0.6.L1.linux.rrg/Cpp-C/Eta/Libs/OL7_64_GCC482/Optimized/ /opt/RTSDK-2.0.6.L1.linux.rrg/Cpp-C/Eta/Libs/OL7_64_GCC482/Optimized//librsslVA.a /opt/RTSDK-2.0.6.L1.linux.rrg/Cpp-C/Eta/Libs/OL7_64_GCC482/Optimized//librssl.a -lnsl -lpthread -lrt -ldl -lm -lstdc++

Answers

  • Hello @vishal.anand,

    I do not think the issue is needing other libraries.

    .a required should be the same as .so required, with my RTSDK 2.0.6, by doing ldd on the built example executable, I see:

    [root@3d7f0e7f49df Shared]# ldd Cons333
    linux-vdso.so.1 => (0x00007ffc4b507000)
    libema.so.14 => /opt/refinitiv/RTSDK-2.0.6.L1.linux.rrg/Cpp-C/Ema/Libs/OL7_64_GCC482/Optimized/Shared/libema.so.14 (0x00007f1ee307c000)
    librt.so.1 => /lib64/librt.so.1 (0x00007f1ee2e74000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007f1ee2c70000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f1ee2a54000)
    libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f1ee274c000)
    librsslVA.so.19 => /opt/refinitiv/RTSDK-2.0.6.L1.linux.rrg/Cpp-C/Eta/Libs/OL7_64_GCC482/Optimized/Shared/librsslVA.so.19 (0x00007f1ee2497000)
    librssl.so.17 => /opt/refinitiv/RTSDK-2.0.6.L1.linux.rrg/Cpp-C/Eta/Libs/OL7_64_GCC482/Optimized/Shared/librssl.so.17 (0x00007f1ee1f08000)
    libm.so.6 => /lib64/libm.so.6 (0x00007f1ee1c06000)
    libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f1ee19f0000)
    libc.so.6 => /lib64/libc.so.6 (0x00007f1ee1622000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f1ee386e000)
    [root@3d7f0e7f49df Shared]#

    I see librssl and and librsslVA and no other RTSDK libraries required.

    librsslVACache should not be required, but in case you need it, it should be built in RTSDK-BinaryPack, in:

    RTSDK-2.0.6.L1.linux.rrg/RTSDK-BinaryPack/Cpp-C/Eta/Libs/XXX/Debug

    To verify the environment,

    Have you build RTSDK 2.0.6 when you have loaded it? The article Deploy and Run Refinitiv Real-Time SDK in Docker can be helpful in quickly building RTSDK on linux, with or without docker, and once you are able to run the simple examples that come with SDK, in Examples folder, your environment will be verified, and hopefully, the custom app will build as expected, as well.

  • That worked. Thanks.