From 52408fef71cf5dbb2bda8d156d912be095fd8a40 Mon Sep 17 00:00:00 2001 From: EricX-Zhao Date: Wed, 15 Jul 2026 14:49:06 +0300 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=A4=E5=8F=89=E7=BC=96?= =?UTF-8?q?=E8=AF=91=E9=85=8D=E7=BD=AE=EF=BC=9A=E4=BC=98=E5=8C=96=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E9=93=BE=E7=8E=AF=E5=A2=83=E5=8F=98=E9=87=8F=E3=80=81?= =?UTF-8?q?=E4=BF=AE=E5=A4=8Dpybind11=20SOABI=E3=80=81=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=B9=B6=E8=A1=8C=E7=BC=96=E8=AF=91=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cross_compile/rk3588/cc_rk3588.Dockerfile | 13 ++++++ cross_compile/rk3588/rk3588.toolchain.cmake | 4 +- cross_compile/ros2/jazzy/ros_jazzy.Dockerfile | 44 ++++++++++++------- .../vendor/vendor_packages.Dockerfile | 1 - 4 files changed, 42 insertions(+), 20 deletions(-) diff --git a/cross_compile/rk3588/cc_rk3588.Dockerfile b/cross_compile/rk3588/cc_rk3588.Dockerfile index 16cad2b..5602a4b 100644 --- a/cross_compile/rk3588/cc_rk3588.Dockerfile +++ b/cross_compile/rk3588/cc_rk3588.Dockerfile @@ -18,4 +18,17 @@ ENV CC_TOOLCHAIN_FILE=/opt/cmake/rk3588.toolchain.cmake ENV TARGET_SYSROOT=/opt/rk3588 +ENV PYTHON_PKG_PATH=${TARGET_SYSROOT}/lib/python3.10/site-packages + +ENV CC=aarch64-none-linux-gnu-gcc \ + CXX=aarch64-none-linux-gnu-g++ \ + AR=aarch64-none-linux-gnu-ar \ + RANLIB=aarch64-none-linux-gnu-ranlib \ + HOSTARCH=aarch64-none-linux-gnu \ + BUILDARCH=x86_64-linux-gnu + +ARG BUILD_JOBS=6 + +ENV MAKEFLAGS="-j${BUILD_JOBS}" + WORKDIR /root diff --git a/cross_compile/rk3588/rk3588.toolchain.cmake b/cross_compile/rk3588/rk3588.toolchain.cmake index 16a922f..adecf5e 100644 --- a/cross_compile/rk3588/rk3588.toolchain.cmake +++ b/cross_compile/rk3588/rk3588.toolchain.cmake @@ -20,10 +20,10 @@ list(APPEND CMAKE_FIND_ROOT_PATH # set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG -Wno-error=unused-variable") # set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG -Wno-error=unused-variable") -# add_link_options("LINKER:-rpath-link,$ENV{TARGET_SYSROOT}/lib") +add_link_options("LINKER:-rpath-link,$ENV{TARGET_SYSROOT}/lib") set(Python3_EXECUTABLE /usr/bin/python3) -set(Python3_NumPy_INCLUDE_DIR $ENV{ROS_ROOT}/lib/python3.10/site-packages/numpy/core/include) +set(Python3_NumPy_INCLUDE_DIR $ENV{TARGET_SYSROOT}/lib/python3.10/site-packages/numpy/core/include) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) diff --git a/cross_compile/ros2/jazzy/ros_jazzy.Dockerfile b/cross_compile/ros2/jazzy/ros_jazzy.Dockerfile index 72bdac3..7aeda98 100644 --- a/cross_compile/ros2/jazzy/ros_jazzy.Dockerfile +++ b/cross_compile/ros2/jazzy/ros_jazzy.Dockerfile @@ -23,11 +23,12 @@ COPY ros2/ros_cpp /workspace/src/ros_cpp RUN touch src/ros2/geometry2/tf2_bullet/COLCON_IGNORE \ && touch src/ros2/rosbag2/rosbag2_storage_sqlite3/COLCON_IGNORE \ && touch src/ros-perception/image_transport_plugins/theora_image_transport/COLCON_IGNORE \ - && touch src/ros2/orocos_kdl_vendor/python_orocos_kdl_vendor/COLCON_IGNORE + && touch src/ros2/orocos_kdl_vendor/python_orocos_kdl_vendor/COLCON_IGNORE \ + && touch src/diagnostics/diagnostic_remote_logging/COLCON_IGNORE -RUN MAKEFLAGS="-j6" colcon build \ +RUN colcon build \ --executor parallel \ - --parallel-workers 6 \ + --parallel-workers 4 \ --install-base ${TARGET_SYSROOT} \ --merge-install \ --packages-up-to ros_cpp \ @@ -41,19 +42,6 @@ RUN MAKEFLAGS="-j6" colcon build \ -DTRACETOOLS_DISABLED=ON \ -DCV_BRIDGE_DISABLE_PYTHON=ON -# pybind11 python soabi issue -WORKDIR ${TARGET_SYSROOT}/lib/python3.10/site-packages/rclpy -RUN mv _rclpy_pybind11.cpython-310-x86_64-linux-gnu.so _rclpy_pybind11.cpython-310-aarch64-linux-gnu.so -WORKDIR ${TARGET_SYSROOT}/lib/python3.10/site-packages/rosbag2_py -RUN mv _transport.cpython-310-x86_64-linux-gnu.so _transport.cpython-310-aarch64-linux-gnu.so -RUN mv _info.cpython-310-x86_64-linux-gnu.so _info.cpython-310-aarch64-linux-gnu.so -RUN mv _compression_options.cpython-310-x86_64-linux-gnu.so _compression_options.cpython-310-aarch64-linux-gnu.so -RUN mv _storage.cpython-310-x86_64-linux-gnu.so _storage.cpython-310-aarch64-linux-gnu.so -RUN mv _reindexer.cpython-310-x86_64-linux-gnu.so _reindexer.cpython-310-aarch64-linux-gnu.so -RUN mv _writer.cpython-310-x86_64-linux-gnu.so _writer.cpython-310-aarch64-linux-gnu.so -RUN mv _message_definitions.cpython-310-x86_64-linux-gnu.so _message_definitions.cpython-310-aarch64-linux-gnu.so -RUN mv _reader.cpython-310-x86_64-linux-gnu.so _reader.cpython-310-aarch64-linux-gnu.so - FROM ${CC_PLATFORM_IMAGE} AS rmw_zenoh_builder COPY --from=ros_builder ${TARGET_SYSROOT} ${TARGET_SYSROOT} @@ -69,7 +57,14 @@ RUN mkdir rmw_zenoh_ws/src -p \ && cd rmw_zenoh_ws/src \ && git clone --depth=1 -b jazzy https://github.com/ros2/rmw_zenoh.git -ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-none-linux-gnu-gcc +# --- 给 cargo/cc-rs 补上明确的区分 --- +ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-none-linux-gnu-gcc \ + CC_aarch64_unknown_linux_gnu=aarch64-none-linux-gnu-gcc \ + CXX_aarch64_unknown_linux_gnu=aarch64-none-linux-gnu-g++ \ + AR_aarch64_unknown_linux_gnu=aarch64-none-linux-gnu-ar \ + HOST_CC=gcc \ + HOST_CXX=g++ \ + HOST_AR=ar RUN . "$HOME/.cargo/env" \ && . ${TARGET_SYSROOT}/local_setup.sh \ @@ -95,4 +90,19 @@ FROM ${CC_PLATFORM_IMAGE} AS final ARG ROS_ROOT ENV ROS_ROOT=${ROS_ROOT} COPY --from=rmw_zenoh_builder ${TARGET_SYSROOT} ${ROS_ROOT} +ENV TARGET_SYSROOT=${ROS_ROOT} + +# pybind11 python soabi issue +RUN cd ${ROS_ROOT}/lib/python3.10/site-packages/rclpy \ + && mv _rclpy_pybind11.cpython-310-x86_64-linux-gnu.so _rclpy_pybind11.cpython-310-aarch64-linux-gnu.so +RUN cd ${ROS_ROOT}/lib/python3.10/site-packages/rosbag2_py \ + && mv _transport.cpython-310-x86_64-linux-gnu.so _transport.cpython-310-aarch64-linux-gnu.so \ + && mv _info.cpython-310-x86_64-linux-gnu.so _info.cpython-310-aarch64-linux-gnu.so \ + && mv _compression_options.cpython-310-x86_64-linux-gnu.so _compression_options.cpython-310-aarch64-linux-gnu.so \ + && mv _storage.cpython-310-x86_64-linux-gnu.so _storage.cpython-310-aarch64-linux-gnu.so \ + && mv _reindexer.cpython-310-x86_64-linux-gnu.so _reindexer.cpython-310-aarch64-linux-gnu.so \ + && mv _writer.cpython-310-x86_64-linux-gnu.so _writer.cpython-310-aarch64-linux-gnu.so \ + && mv _message_definitions.cpython-310-x86_64-linux-gnu.so _message_definitions.cpython-310-aarch64-linux-gnu.so \ + && mv _reader.cpython-310-x86_64-linux-gnu.so _reader.cpython-310-aarch64-linux-gnu.so + WORKDIR /opt diff --git a/cross_compile/vendor/vendor_packages.Dockerfile b/cross_compile/vendor/vendor_packages.Dockerfile index d5fac02..92a4be3 100644 --- a/cross_compile/vendor/vendor_packages.Dockerfile +++ b/cross_compile/vendor/vendor_packages.Dockerfile @@ -159,7 +159,6 @@ RUN pip download --no-deps -d /wheels \ lark \ pyyaml \ catkin_pkg \ - setuptools \ packaging \ pyparsing \ argcomplete \