ros / console_bridge

A ROS-independent package for logging that seamlessly pipes into rosconsole/rosout for ROS-dependent packages.
BSD 3-Clause "New" or "Revised" License
22 stars 62 forks source link

Forcing SHARED seems to have masked some issues #7

Closed tfoote closed 11 years ago

tfoote commented 11 years ago

Potentially a missing -fPIC in the compile arguments. I guess because it's not catkin it doesn't default to SHARED. Do we wnat to implement

Anything building on top of console_bridge is failing, like class_loader: http://jenkins.willowgarage.com:8080/view/HbinP64/job/ros-hydro-class-loader_binarydeb_precise_amd64/7/console

make[2]: Entering directory `/tmp/buildd/ros-hydro-class-loader-0.2.1-0precise-20130619-0203/obj-x86_64-linux-gnu'
/usr/bin/cmake -H/tmp/buildd/ros-hydro-class-loader-0.2.1-0precise-20130619-0203 -B/tmp/buildd/ros-hydro-class-loader-0.2.1-0precise-20130619-0203/obj-x86_64-linux-gnu --check-build-system CMakeFiles/Makefile.cmake 0
/usr/bin/cmake -E cmake_progress_start /tmp/buildd/ros-hydro-class-loader-0.2.1-0precise-20130619-0203/obj-x86_64-linux-gnu/CMakeFiles /tmp/buildd/ros-hydro-class-loader-0.2.1-0precise-20130619-0203/obj-x86_64-linux-gnu/CMakeFiles/progress.marks
make -f CMakeFiles/Makefile2 all
make[3]: Entering directory `/tmp/buildd/ros-hydro-class-loader-0.2.1-0precise-20130619-0203/obj-x86_64-linux-gnu'
make -f CMakeFiles/class_loader.dir/build.make CMakeFiles/class_loader.dir/depend
make[4]: Entering directory `/tmp/buildd/ros-hydro-class-loader-0.2.1-0precise-20130619-0203/obj-x86_64-linux-gnu'
cd /tmp/buildd/ros-hydro-class-loader-0.2.1-0precise-20130619-0203/obj-x86_64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /tmp/buildd/ros-hydro-class-loader-0.2.1-0precise-20130619-0203 /tmp/buildd/ros-hydro-class-loader-0.2.1-0precise-20130619-0203 /tmp/buildd/ros-hydro-class-loader-0.2.1-0precise-20130619-0203/obj-x86_64-linux-gnu /tmp/buildd/ros-hydro-class-loader-0.2.1-0precise-20130619-0203/obj-x86_64-linux-gnu /tmp/buildd/ros-hydro-class-loader-0.2.1-0precise-20130619-0203/obj-x86_64-linux-gnu/CMakeFiles/class_loader.dir/DependInfo.cmake --color=
Scanning dependencies of target class_loader
make[4]: Leaving directory `/tmp/buildd/ros-hydro-class-loader-0.2.1-0precise-20130619-0203/obj-x86_64-linux-gnu'
make -f CMakeFiles/class_loader.dir/build.make CMakeFiles/class_loader.dir/build
make[4]: Entering directory `/tmp/buildd/ros-hydro-class-loader-0.2.1-0precise-20130619-0203/obj-x86_64-linux-gnu'
/usr/bin/cmake -E cmake_progress_report /tmp/buildd/ros-hydro-class-loader-0.2.1-0precise-20130619-0203/obj-x86_64-linux-gnu/CMakeFiles 1
[ 25%] Building CXX object CMakeFiles/class_loader.dir/src/class_loader.cpp.o
/usr/lib/ccache/c++   -Dclass_loader_EXPORTS -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security  -fPIC -I/tmp/buildd/ros-hydro-class-loader-0.2.1-0precise-20130619-0203/include -I/opt/ros/hydro/include    -o CMakeFiles/class_loader.dir/src/class_loader.cpp.o -c /tmp/buildd/ros-hydro-class-loader-0.2.1-0precise-20130619-0203/src/class_loader.cpp
/usr/bin/cmake -E cmake_progress_report /tmp/buildd/ros-hydro-class-loader-0.2.1-0precise-20130619-0203/obj-x86_64-linux-gnu/CMakeFiles 2
[ 50%] Building CXX object CMakeFiles/class_loader.dir/src/class_loader_core.cpp.o
/usr/lib/ccache/c++   -Dclass_loader_EXPORTS -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security  -fPIC -I/tmp/buildd/ros-hydro-class-loader-0.2.1-0precise-20130619-0203/include -I/opt/ros/hydro/include    -o CMakeFiles/class_loader.dir/src/class_loader_core.cpp.o -c /tmp/buildd/ros-hydro-class-loader-0.2.1-0precise-20130619-0203/src/class_loader_core.cpp
/usr/bin/cmake -E cmake_progress_report /tmp/buildd/ros-hydro-class-loader-0.2.1-0precise-20130619-0203/obj-x86_64-linux-gnu/CMakeFiles 3
[ 75%] Building CXX object CMakeFiles/class_loader.dir/src/meta_object.cpp.o
/usr/lib/ccache/c++   -Dclass_loader_EXPORTS -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security  -fPIC -I/tmp/buildd/ros-hydro-class-loader-0.2.1-0precise-20130619-0203/include -I/opt/ros/hydro/include    -o CMakeFiles/class_loader.dir/src/meta_object.cpp.o -c /tmp/buildd/ros-hydro-class-loader-0.2.1-0precise-20130619-0203/src/meta_object.cpp
/usr/bin/cmake -E cmake_progress_report /tmp/buildd/ros-hydro-class-loader-0.2.1-0precise-20130619-0203/obj-x86_64-linux-gnu/CMakeFiles 4
[100%] Building CXX object CMakeFiles/class_loader.dir/src/multi_library_class_loader.cpp.o
/usr/lib/ccache/c++   -Dclass_loader_EXPORTS -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security  -fPIC -I/tmp/buildd/ros-hydro-class-loader-0.2.1-0precise-20130619-0203/include -I/opt/ros/hydro/include    -o CMakeFiles/class_loader.dir/src/multi_library_class_loader.cpp.o -c /tmp/buildd/ros-hydro-class-loader-0.2.1-0precise-20130619-0203/src/multi_library_class_loader.cpp
Linking CXX shared library devel/lib/libclass_loader.so
/usr/bin/cmake -E cmake_link_script CMakeFiles/class_loader.dir/link.txt --verbose=1
/usr/lib/ccache/c++  -fPIC -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security    -shared -Wl,-soname,libclass_loader.so -o devel/lib/libclass_loader.so CMakeFiles/class_loader.dir/src/class_loader.cpp.o CMakeFiles/class_loader.dir/src/class_loader_core.cpp.o CMakeFiles/class_loader.dir/src/meta_object.cpp.o CMakeFiles/class_loader.dir/src/multi_library_class_loader.cpp.o -lboost_thread-mt -lpthread /opt/ros/hydro/lib/libconsole_bridge.a -lPocoFoundation -ldl 
/usr/bin/ld: /opt/ros/hydro/lib/libconsole_bridge.a(console.cpp.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/opt/ros/hydro/lib/libconsole_bridge.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[4]: *** [devel/lib/libclass_loader.so] Error 1
tfoote commented 11 years ago

I think the fix can be to use this logic: https://github.com/ros/catkin/blob/c5437711851d6559c637bfe47e8a5e38a4af5249/cmake/tools/libraries.cmake

dirk-thomas commented 11 years ago

Can you please comment on this if this is still an issue? According to the build logs I cant spot any problems currently. Has there been a fix in this repo / any of the downstream packages related to this?

isucan commented 11 years ago

I believe this was fixed: https://github.com/ros/console_bridge/commit/95050b137824d65942967e4670869f85de00ab0c