question

Upvotes
Accepted
20 1 8 10

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


trepeta-apirefinitiv-realtime-sdkc
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
Accepted
52.9k 136 44 63

@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++
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

That worked. Thanks.
Upvotes
31.8k 37 11 19

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.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.