1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

🤖ROS 2 JazzyをFedora 41でビルドする際のポイントまとめ / Build ROS 2 Jazzy on Fedora 41🦊

Last updated at Posted at 2025-10-10

概要

ROS 2 JazzyをFedora 41でソースビルドした際の手順・ポイントをまとめます。 /
This article summarizes the steps and tips for building ROS 2 Jazzy from source on Fedora 41.

公式ドキュメント:RHEL DevelopmentSetup
を見ながらビルドしたのですが、Fedora 41デフォルト環境のままでは途中でビルドエラーが発生したので、Pythonのバージョン調整などを行いました。
同じ環境で困っている方の参考になれば幸いです。


環境 / Environment

項目 / Item バージョン / Version
OS Fedora 41 (x86_64)
ROS 2 Jazzy (from source)
Python 3.10.14
gcc / g++ gcc (GCC) 14.3.1 20250808 (Red Hat 14.3.1-3)
cmake 3.30.8
colcon-core 0.20.0

発生したビルドエラーと行った対策 / Build Errors and Solutions

番号 / No. ビルドエラー / Error 対策 / Solution
1 sipconfigが使えない / sipconfig not available Pythonを3.13から3.10に変更 / Downgrade Python 3.13 → 3.10
2 py::hash(py::self) の宣言が正しくない / py::hash(py::self) declaration incorrect buildフォルダ以下のソースを手作業で修正 / Comment out auto-generated code in build folder
3 RPM_ARCHなどの環境変数未定義 / Undefined RPM_ARCH environment variable シェルで手動定義 / Define manually in shell

1. sipconfigが使えない / sipconfig not available

Fedora 41 デフォルトの Python は 3.13 でした。

$ python3 --version
Python 3.13.7

ROS 2 Jazzy は sipconfig を使用していますが、Python3.13 では廃止されているためエラーが発生します。
そのため、ビルド用 Python を 3.10.14 に変更しました。


2. py::hash(py::self) の宣言が正しくない / py::hash(py::self) declaration incorrect

ROS 2 Jazzyビルド環境が自動生成するコードの一部「C++がhash()関数をPython向けに公開する宣言」が、Fedora41ビルド環境のチェック基準では誤りであるため、ビルドエラーが発生しました。
ビルドエラー対策として、自動生成されたソースの一部を手でコメントアウトしました。
コメントアウトして問題無いと判断した理由は後述します。

修正対象 / Target files

ros2_jazzy/build/python_orocos_kdl_vendor/_deps/python_orocos_kdl-src/python_orocos_kdl/PyKDL/framevel.cpp

//frame_vel.def(py::hash(py::self));
//double_vel.def(py::hash(py::self));
//vector_vel.def(py::hash(py::self));
//twist_vel.def(py::hash(py::self));
//rotation_vel.def(py::hash(py::self));

ros2_jazzy/build/python_orocos_kdl_vendor/_deps/python_orocos_kdl-src/python_orocos_kdl/PyKDL/frames.cpp

//frame.def(py::hash(py::self));
//vector.def(py::hash(py::self));
//wrench.def(py::hash(py::self));
//twist.def(py::hash(py::self));
//rotation.def(py::hash(py::self));

コメントアウトして問題無いと判断した理由 / Reason it's safe

ROS 2 Jazzyビルド用ディレクトリで以下のgrepコマンドを実行し、検索結果が無しだったため、「C++がhash()関数をPython向けに公開する宣言」を削除しても、Pythonで呼んでいる箇所が無いため削除しても問題無いと判断しました。

$ grep -R --include='*.py' "hash(PyKDL" src/

3. RPM_ARCHなどの環境変数未定義 / Undefined RPM_ARCH

Fedora では RPM パッケージ作成用の環境変数が未定義の場合があります。
ビルドシェルで以下を設定すると回避できます。

export RPM_ARCH=$(uname -m)
export RPM_PACKAGE_RELEASE=1
export RPM_PACKAGE_VERSION=1.0
export RPM_PACKAGE_NAME=qt_gui_cpp

Ubuntu では最初から定義済みの場合があるようです。


まとめ / Summary

  • Fedora 41 + ROS 2 Jazzy + Python3.10 + GCC14 でのソースビルド向けの注意点を整理しました。
  • py::hash(py::self) のコメントアウトは Python 側で未使用なため安全です。
  • Python バージョンや環境変数の調整を行えば、ソースビルドは問題なく完了します。
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?