[Discourse.ros.org] [Next Generation ROS] Library not loaded: libfastcdr.dylib

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[Discourse.ros.org] [Next Generation ROS] Library not loaded: libfastcdr.dylib

Dirk Thomas via ros-users


**Operating System:** OSX 10.12.5
**Installation type:** binary
**Version or commit hash:** beta 1; version: 148df7e841b91da488ec3bb4abd295a2bccdb728
**DDS implementation:** Fast-RTPS
**Client library (if applicable):** boost, restcpp

**Steps to reproduce issue**
ament test --only-packages skynet

**Expected behavior**
test runs normally

**Actual behavior**
Failed with output:
<pre>
+++ Testing 'skynet'
==> '. /Users/mc/skynet-edge/core_ws/build/skynet/cmake__test.sh && /usr/bin/make test ARGS=-V -D ExperimentalTest --no-compress-output' in '/Users/mc/skynet-edge/core_ws/build/skynet'
Running tests...
UpdateCTestConfiguration  from :/Users/mc/skynet-edge/core_ws/build/skynet/DartConfiguration.tcl
Parse Config file:/Users/mc/skynet-edge/core_ws/build/skynet/DartConfiguration.tcl
   Site: mcs-MacBook-Pro.sjc.cyngn.internal
   Build name: Darwin-c++
 Add coverage exclude regular expressions.
SetCTestConfiguration:CMakeCommand:/Applications/CMake.app/Contents/bin/cmake
UpdateCTestConfiguration  from :/Users/mc/skynet-edge/core_ws/build/skynet/DartConfiguration.tcl
Parse Config file:/Users/mc/skynet-edge/core_ws/build/skynet/DartConfiguration.tcl
Test project /Users/mc/skynet-edge/core_ws/build/skynet
Constructing a list of tests
Done constructing a list of tests
Updating test list for fixtures
Added 0 tests to meet fixture requirements
Checking test dependency graph...
Checking test dependency graph end
test 1
    Start 1: skynet_test

1: Test command: /usr/local/bin/python3 "-u" "/Users/mc/ros2-osx/share/ament_cmake_test/cmake/run_test.py" "/Users/mc/skynet-edge/core_ws/build/skynet/test_results/skynet/skynet_test.gtest.xml" "--output-file" "/Users/mc/skynet-edge/core_ws/build/skynet/ament_cmake_gmock/skynet_test.txt" "--command" "/Users/mc/skynet-edge/core_ws/build/skynet/test/skynet_test" "--gtest_output=xml:/Users/mc/skynet-edge/core_ws/build/skynet/test_results/skynet/skynet_test.gtest.xml"
1: Test timeout computed to be: 60
1: -- run_test.py: invoking following command in '/Users/mc/skynet-edge/core_ws/src/skynet':
1:  - /Users/mc/skynet-edge/core_ws/build/skynet/test/skynet_test --gtest_output=xml:/Users/mc/skynet-edge/core_ws/build/skynet/test_results/skynet/skynet_test.gtest.xml
1: dyld: Library not loaded: libfastcdr.dylib
1:   Referenced from: /Users/mc/ros2-osx/lib/librmw_fastrtps_cpp.dylib
1:   Reason: image not found
1: -- run_test.py: return code -6
1: -- run_test.py: generate result file '/Users/mc/skynet-edge/core_ws/build/skynet/test_results/skynet/skynet_test.gtest.xml' with failed test
1: -- run_test.py: verify result file '/Users/mc/skynet-edge/core_ws/build/skynet/test_results/skynet/skynet_test.gtest.xml'
1/1 Test #1: skynet_test ......................***Failed    0.14 sec

0% tests passed, 1 tests failed out of 1

Label Time Summary:
gmock    =   0.14 sec (1 test)

Total Test time (real) =   0.14 sec

The following tests FAILED:
      1 - skynet_test (Failed)
Errors while running CTest
make: *** [test] Error 8

<== Command '. /Users/mc/skynet-edge/core_ws/build/skynet/cmake__test.sh && /usr/bin/make test 'ARGS=-V -D ExperimentalTest --no-compress-output'' failed in '/Users/mc/skynet-edge/core_ws/build/skynet' with exit code '2'
</pre>

**Additional information**
My project compiles fine. I created a ROS2 test for my project and want to run it. The same test works fine on Ubuntu. I only have this problem on OSX.

As message says, the system can't find libfastcdr.dylib. That is weird, because I can see the library in ~/ros2-osx/lib dir. I assume it should be visible after I sourced ROS2. I tried source scripts setup.bash, setup.sh, local_setup.bash, local_setup.sh. Nothing helped.

If I manually create symbol link in /usr/local/lib pointing to  ~/ros2-osx/lib/libfastcdr.dylib, everything works fine. It doesn't feels the right fix though.

Could someone hint how should it work normally?





---
[Visit Topic](https://discourse.ros.org/t/library-not-loaded-libfastcdr-dylib/2195/1) or reply to this email to respond.


If you do not want to receive messages from ros-users please use the unsubscribe link below. If you use the one above, you will stop all of ros-users from receiving updates.
______________________________________________________________________________
ros-users mailing list
[hidden email]
http://lists.ros.org/mailman/listinfo/ros-users
Unsubscribe: <http://lists.ros.org/mailman//options/ros-users>
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[Discourse.ros.org] [Next Generation ROS] Library not loaded: libfastcdr.dylib

Dirk Thomas via ros-users


That could be an issue with how Fast-RTPS is being linked. It sounds like it isn't using RPATH and it should be.

Even without RPATH it should work if `~/ros2-osx/lib` is in your `DYLD_LIBRARY_PATH` environment variable after you source `~/ros2-osx/setup.bash` (this is the right one to source in most cases). If it is in the variable, then you may have SIP enabled which is a security feature in macOS that prevents propagation of the `DYLD_LIBRARY_PATH` to "system" binaries, like bash and make, which reside in `/usr/bin` and similar PATH folders.

If it is SIP then you can disable it (not recommended for security, but will work around the issue):

- https://support.apple.com/en-us/HT204899
- http://osxdaily.com/2015/10/05/disable-rootless-system-integrity-protection-mac-os-x/





---
[Visit Topic](https://discourse.ros.org/t/library-not-loaded-libfastcdr-dylib/2195/2) or reply to this email to respond.


If you do not want to receive messages from ros-users please use the unsubscribe link below. If you use the one above, you will stop all of ros-users from receiving updates.
______________________________________________________________________________
ros-users mailing list
[hidden email]
http://lists.ros.org/mailman/listinfo/ros-users
Unsubscribe: <http://lists.ros.org/mailman//options/ros-users>
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[Discourse.ros.org] [Next Generation ROS] Library not loaded: libfastcdr.dylib

Dirk Thomas via ros-users
In reply to this post by Dirk Thomas via ros-users


I might be reading the log incorrectly, but near the top it says "beta 1." Lots has changed since then (6 months ago) in both ROS 2 and Fast-RTPS; you might want to try Beta 2 and see if the issue goes away.





---
[Visit Topic](https://discourse.ros.org/t/library-not-loaded-libfastcdr-dylib/2195/3) or reply to this email to respond.


If you do not want to receive messages from ros-users please use the unsubscribe link below. If you use the one above, you will stop all of ros-users from receiving updates.
______________________________________________________________________________
ros-users mailing list
[hidden email]
http://lists.ros.org/mailman/listinfo/ros-users
Unsubscribe: <http://lists.ros.org/mailman//options/ros-users>
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[Discourse.ros.org] [Next Generation ROS] Library not loaded: libfastcdr.dylib

Dirk Thomas via ros-users
In reply to this post by Dirk Thomas via ros-users


@wjwwood
Not sure what is RPATH. Is it env. variable? I can't see this variable set after I sourced ~/ros2-osx/setup.bash.
I tried to set DYLD_LIBRARY_PATH manually but, as you said, it isn't helping due to SIP.

@codebot
Tried it with ROS2 beta2. Message is changed a bit but problem remains the same.
<pre>
Running tests...
UpdateCTestConfiguration  from :/Users/mc/skynet-edge/core_ws/build/skynet/DartConfiguration.tcl
Parse Config file:/Users/mc/skynet-edge/core_ws/build/skynet/DartConfiguration.tcl
   Site: mcs-MacBook-Pro.sjc.cyngn.internal
   Build name: Darwin-c++
 Add coverage exclude regular expressions.
SetCTestConfiguration:CMakeCommand:/Applications/CMake.app/Contents/bin/cmake
Create new tag: 20170712-1754 - Experimental
UpdateCTestConfiguration  from :/Users/mc/skynet-edge/core_ws/build/skynet/DartConfiguration.tcl
Parse Config file:/Users/mc/skynet-edge/core_ws/build/skynet/DartConfiguration.tcl
Test project /Users/mc/skynet-edge/core_ws/build/skynet
Constructing a list of tests
Done constructing a list of tests
Updating test list for fixtures
Added 0 tests to meet fixture requirements
Checking test dependency graph...
Checking test dependency graph end
test 1
    Start 1: skynet_test

1: Test command: /usr/local/bin/python3 "-u" "/Users/mc/ros2-osx-b2/share/ament_cmake_test/cmake/run_test.py" "/Users/mc/skynet-edge/core_ws/build/skynet/test_results/skynet/skynet_test.gtest.xml" "--output-file" "/Users/mc/skynet-edge/core_ws/build/skynet/ament_cmake_gmock/skynet_test.txt" "--command" "/Users/mc/skynet-edge/core_ws/build/skynet/test/skynet_test" "--gtest_output=xml:/Users/mc/skynet-edge/core_ws/build/skynet/test_results/skynet/skynet_test.gtest.xml"
1: Test timeout computed to be: 60
1: -- run_test.py: invoking following command in '/Users/mc/skynet-edge/core_ws/src/skynet':
1:  - /Users/mc/skynet-edge/core_ws/build/skynet/test/skynet_test --gtest_output=xml:/Users/mc/skynet-edge/core_ws/build/skynet/test_results/skynet/skynet_test.gtest.xml
1: dyld: Library not loaded: libfastrtps.1.dylib
1:   Referenced from: /Users/mc/skynet-edge/core_ws/build/skynet/test/skynet_test
1:   Reason: image not found
1: -- run_test.py: return code -6
1: -- run_test.py: generate result file '/Users/mc/skynet-edge/core_ws/build/skynet/test_results/skynet/skynet_test.gtest.xml' with failed test
1: -- run_test.py: verify result file '/Users/mc/skynet-edge/core_ws/build/skynet/test_results/skynet/skynet_test.gtest.xml'
1/1 Test #1: skynet_test ......................***Failed    0.17 sec

0% tests passed, 1 tests failed out of 1

Label Time Summary:
gmock    =   0.17 sec (1 test)

Total Test time (real) =   0.18 sec

The following tests FAILED:
      1 - skynet_test (Failed)
Errors while running CTest
make: *** [test] Error 8

<== Command '. /Users/mc/skynet-edge/core_ws/build/skynet/cmake__test.sh && /usr/bin/make test 'ARGS=-V -D ExperimentalTest --no-compress-output'' failed in '/Users/mc/skynet-edge/core_ws/build/skynet' with exit code '2'
'test_pkg' for package '/Users/mc/skynet-edge/core_ws/src/skynet' failed: <== Command '. /Users/mc/skynet-edge/core_ws/build/skynet/cmake__test.sh && /usr/bin/make test 'ARGS=-V -D ExperimentalTest --no-compress-output'' failed in '/Users/mc/skynet-edge/core_ws/build/skynet' with exit code '2'
<== Command '. /Users/mc/skynet-edge/core_ws/build/skynet/cmake__test.sh && /usr/bin/make test 'ARGS=-V -D ExperimentalTest --no-compress-output'' failed in '/Users/mc/skynet-edge/core_ws/build/skynet' with exit code '2'
</pre>

Is there anything else I can try to fix it?





---
[Visit Topic](https://discourse.ros.org/t/library-not-loaded-libfastcdr-dylib/2195/4) or reply to this email to respond.


If you do not want to receive messages from ros-users please use the unsubscribe link below. If you use the one above, you will stop all of ros-users from receiving updates.
______________________________________________________________________________
ros-users mailing list
[hidden email]
http://lists.ros.org/mailman/listinfo/ros-users
Unsubscribe: <http://lists.ros.org/mailman//options/ros-users>
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[Discourse.ros.org] [Next Generation ROS] Library not loaded: libfastcdr.dylib

Dirk Thomas via ros-users
In reply to this post by Dirk Thomas via ros-users


[quote="mch, post:4, topic:2195"]
Not sure what is RPATH. Is it env. variable? I can't see this variable set after I sourced ~/ros2-osx/setup.bash.

I tried to set DYLD_LIBRARY_PATH manually but, as you said, it isn't helping due to SIP.
[/quote]


RPATH is something that is contained within shared libraries, see:

- https://blogs.oracle.com/dipol/dynamic-libraries,-rpath,-and-mac-os
- https://cmake.org/Wiki/CMake_RPATH_handling

You could try using `install_name_tool` to change the `libfastrtps.1.dylib` reference in your `/Users/mc/skynet-edge/core_ws/build/skynet/test/skynet_test` executable to be `/Users/mc/ros2-osx/lib/libfastrtps.1.dylib`, or what ever the actual path is.





---
[Visit Topic](https://discourse.ros.org/t/library-not-loaded-libfastcdr-dylib/2195/5) or reply to this email to respond.


If you do not want to receive messages from ros-users please use the unsubscribe link below. If you use the one above, you will stop all of ros-users from receiving updates.
______________________________________________________________________________
ros-users mailing list
[hidden email]
http://lists.ros.org/mailman/listinfo/ros-users
Unsubscribe: <http://lists.ros.org/mailman//options/ros-users>
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[Discourse.ros.org] [Next Generation ROS] Library not loaded: libfastcdr.dylib

Dirk Thomas via ros-users
In reply to this post by Dirk Thomas via ros-users


I finally fixed it by adding these lines to my CMakeLists.txt
<pre>
...
#ROS2 beta1
SET(ROS_LIBRARIES_DIR "${ament_cmake_DIR}/../../../lib")
#ROS2 beta2
#SET(ROS_LIBRARIES_DIR "${fastcdr_LIB_DIR}")
...
ament_add_gmock(${PROJECT_NAME}_test
        MyTestName.cpp
        APPEND_LIBRARY_DIRS "${ROS_LIBRARIES_DIR}"
)
</pre>





---
[Visit Topic](https://discourse.ros.org/t/library-not-loaded-libfastcdr-dylib/2195/6) or reply to this email to respond.


If you do not want to receive messages from ros-users please use the unsubscribe link below. If you use the one above, you will stop all of ros-users from receiving updates.
______________________________________________________________________________
ros-users mailing list
[hidden email]
http://lists.ros.org/mailman/listinfo/ros-users
Unsubscribe: <http://lists.ros.org/mailman//options/ros-users>
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[Discourse.ros.org] [Next Generation ROS] Library not loaded: libfastcdr.dylib

Dirk Thomas via ros-users
In reply to this post by Dirk Thomas via ros-users


I'm glad you got it working, but it shouldn't be necessary I think. It's probably either a bug in the CMake module for Fast-RTPS or in how we pass along, or link to, those libraries in `rmw_fastrtps_cpp`.

I'll see if I can look into later.





---
[Visit Topic](https://discourse.ros.org/t/library-not-loaded-libfastcdr-dylib/2195/7) or reply to this email to respond.


If you do not want to receive messages from ros-users please use the unsubscribe link below. If you use the one above, you will stop all of ros-users from receiving updates.
______________________________________________________________________________
ros-users mailing list
[hidden email]
http://lists.ros.org/mailman/listinfo/ros-users
Unsubscribe: <http://lists.ros.org/mailman//options/ros-users>
Loading...