From: Rich M. <jp...@gm...> - 2012-02-29 03:02:04
|
On 02/28/2012 09:50 AM, David wrote: > Hi, > > I am using Player v.3.0.2. I have written a player plugin called SRDriver.cc I > can generate the library using the example CMakeLists.txt > > CMAKE_MINIMUM_REQUIRED (VERSION 2.4 FATAL_ERROR) > PROJECT (example_player_driver) > > # Include this CMake module to get most of the settings needed to build > SET (CMAKE_MODULE_PATH "/usr/local/share/cmake/Modules") > INCLUDE (UsePlayerPlugin) > > PLAYER_ADD_PLUGIN_DRIVER (srdriver SOURCES SRDriver.cc) > > If I run the configure file it works and I am able to use this driver. > > If I want to add the libraries to access the hardware I get an error. I am using > a roboard and if I compile and use the libraries normally using C++ I use the > following command to compile it. > > sudo g++ -o main main.cpp -I /home/sobot/Documents/RoBoIO-src-v1.6- > gcc/RoBoIO/libsrc -L /home/sobot/Documents/RoBoIO-src-v1.6-gcc/RoBoIO/ -static – > lRBIO > > However when I try to use it with my plugin I get an error. This is my new > CMakeLists.txt > > CMAKE_MINIMUM_REQUIRED (VERSION 2.4 FATAL_ERROR) > PROJECT (example_player_driver) > > # Include this CMake module to get most of the settings needed to build > SET (CMAKE_MODULE_PATH "/usr/local/share/cmake/Modules") > INCLUDE (UsePlayerPlugin) > > PLAYER_ADD_PLUGIN_DRIVER (srdriver SOURCES SRDriver.cc RoboDriver.cpp > RoboDriver.h INCLUDEDIRS /home/sobot/Documents/RoBoIO-src-v1.6-gcc/RoBoIO/libsrc > LIBDIRS /home/sobot/Documents/RoBoIO-src-v1.6-gcc/RoBoIO LINKFLAGS -static - > lRBIO) > > The error is: > player: symbol lookup error: > /home/sobot/Desktop/rb_files/Roboard/libsrdriver.so: undefined symbol: > roboio_SetRBVer > > I am not an expert in C++ so I assume I made a mistake somewhere with the > libraries. Help would be appreciated very much. > > Best Regards, > David > It seems that it's not statically linking when you're using CMake. You can set your LD_LIBRARY_PATH to where the "roboio" shared libraries are. If you run "make VERBOSE=1" using CMake makefiles, you can check the arguments to the call to g++ and try to find the difference between what CMake is doing and what happens if you do it manually. Rich |