Hi, I am trying to run the vehicle tracking use case on Linux. After I run gmake, I recieve a very long list of errors regarding the auto generated file "AirTrafficControlSupport.cxx". An example of the error messages is:
AirTrafficControl.cxx:(.text+0xe2be): undefined reference to `RTILog_setLogLevel'
AirTrafficControl.cxx:(.text+0xe2c9): undefined reference to `DDSLog_g_instrumentationMask'
When I check the generated folder, the AirTrafficControlSupport has been generated and seems to be correct. Any advice on how to fix this error?
This looks like a linking issue. The linker isn't finding the Connext DDS libraries. What is the output showing the link command arguments? Does it show Connext DDS libraries? Are the paths to the libs defined? Maybe you're missing an evironment variable or something?
Hello kayajae!
Do you have multiple versions of Connext DDS installed? Also, what architecture are you compiling for? (Are you using one of the makefiles that is provided with the example?)
Thank you,
Rose
Hi,
this is what is first outputted:
g++ -m64 -static-libgcc -o objs/x64Linux3gcc4.8.2/FlightPlan/FlightPlanGenerator objs/x64Linux3gcc4.8.2/FlightPlan/FlightPlanPublisherInterface.o objs/x64Linux3gcc4.8.2/FlightPlan/FlightPlanGenerator.o objs/x64Linux3gcc4.8.2/Common/DDSCommunicator.o objs/x64Linux3gcc4.8.2/Common/OSAPI.o objs/x64Linux3gcc4.8.2/Common/AirTrafficControl.o objs/x64Linux3gcc4.8.2/Common/AirTrafficControlPlugin.o objs/x64Linux3gcc4.8.2/Common/AirTrafficControlSupport.o -L"/opt/rti_connext_dds-5.3.1"/lib/x64Linux3gcc4.8.2 -ldl -lnsl -lm -lpthread -lrt
I am compiling for Linux 4.8.2. I am using one of the makefiles but this arch didn't exist in my download. I edited the arch in the Makefile.x64Linux3gcc5.4.6 to match my arch. If I run this makefile without the arch changed, it still fails
It doesn't look like you're including any RTI Connext DDS libraries in your link line. You need libs like " -lrticonnextmsgcpp -lnddscpp -lnddsc -lnddscore"
Thanks, that helped!!! :) When I fixed that, I got another error which was:
/usr/bin/ld: cannot find -lwx_gtk2u_xrc-3.0
/usr/bin/ld: cannot find -lwx_gtk2u_html-3.0
/usr/bin/ld: cannot find -lwx_gtk2u_qa-3.0
/usr/bin/ld: cannot find -lwx_gtk2u_adv-3.0
/usr/bin/ld: cannot find -lwx_gtk2u_core-3.0
/usr/bin/ld: cannot find -lwx_baseu_xml-3.0
/usr/bin/ld: cannot find -lwx_baseu_net-3.0
/usr/bin/ld: cannot find -lwx_baseu-3.0
I understand that these files cannot be found but not sure where to look for them or how to fix the error.
Our windows targets and one linux target (x64Linux3gcc5.4.0) include the prebuilt wxwidgets that this case+code demonstration uses.
This is why the only linux make file that comes with the example is for the x64Linux3gcc5.4.0 platform.
Do you have the x64Linux3gcc5.4.0 Connext DDS target installed on your linux platform? And are you using that makefile?
As Ross said, you are missing the libs from wxWidgets. You can install wxWidgets 3.0 on your Linux box...how to do so depends on your distribution.
https://wiki.codelite.org/pmwiki.php/Main/WxWidgets30Binaries#toc2