背景
ROS melodicでOSSパッケージを利用した開発を行う中で、make時にundefined reference to...(に対する定義されていない参照です)のエラーが発生する場合があったため、原因をまとめておく。
記事の目的
ROSのOSSパッケージを利用する際、make時にundefined reference to...のエラーが出る原因をまとめる
undefined reference
現象
GitHubでOSSのパッケージをcloneしてcatkin_makeする際、下記のようなエラーが出る場合がある$ catkin_make ...
...
/opt/ros/melodic/lib/libtf.so: undefined reference to tf2_ros::TransformListener::TransformListener(tf2::BufferCore&, ros::NodeHandle const&, bool)'
collect2: error: ld returned 1 exit status
...
原因
原因として、下記が考えられる。- OSSパッケージのバージョン違い rosには、ディストリビューション毎にバージョンが変更され、tfなどの標準パッケージの仕様が変更される場合がある。 よって、git cloneしたパッケージのバージョンが異なると、make時にエラーとなる場合がある。
対処方法
- OSSパッケージのバージョン違い OSSパッケージのgitブランチを確認し、バージョンを合わせる
- ブランチを確認する
- ブランチを変更する
$ cd < OSSパッケージののルートディレクトリ >
$ git branch
noetic-devel # ros noetic用のブランチ
$ git checkout <現在のROSのブランチ>
<現在のROSのブランチ>
まとめ
- ROSのOSSパッケージを利用する際、make時にundefined reference to...のエラーが出る原因をまとめた
参考文献
変更履歴
- 2020/05/23: 新規作成
0 件のコメント:
コメントを投稿