修复交叉编译配置:优化工具链环境变量、修复pybind11 SOABI、调整并行编译参数

This commit is contained in:
EricX-Zhao
2026-07-15 14:49:06 +03:00
parent 12b7f933ed
commit 52408fef71
4 changed files with 42 additions and 20 deletions
+13
View File
@@ -18,4 +18,17 @@ ENV CC_TOOLCHAIN_FILE=/opt/cmake/rk3588.toolchain.cmake
ENV TARGET_SYSROOT=/opt/rk3588 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 WORKDIR /root
+2 -2
View File
@@ -20,10 +20,10 @@ list(APPEND CMAKE_FIND_ROOT_PATH
# set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG -Wno-error=unused-variable") # set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG -Wno-error=unused-variable")
# set(CMAKE_CXX_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_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_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+27 -17
View File
@@ -23,11 +23,12 @@ COPY ros2/ros_cpp /workspace/src/ros_cpp
RUN touch src/ros2/geometry2/tf2_bullet/COLCON_IGNORE \ RUN touch src/ros2/geometry2/tf2_bullet/COLCON_IGNORE \
&& touch src/ros2/rosbag2/rosbag2_storage_sqlite3/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/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 \ --executor parallel \
--parallel-workers 6 \ --parallel-workers 4 \
--install-base ${TARGET_SYSROOT} \ --install-base ${TARGET_SYSROOT} \
--merge-install \ --merge-install \
--packages-up-to ros_cpp \ --packages-up-to ros_cpp \
@@ -41,19 +42,6 @@ RUN MAKEFLAGS="-j6" colcon build \
-DTRACETOOLS_DISABLED=ON \ -DTRACETOOLS_DISABLED=ON \
-DCV_BRIDGE_DISABLE_PYTHON=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 FROM ${CC_PLATFORM_IMAGE} AS rmw_zenoh_builder
COPY --from=ros_builder ${TARGET_SYSROOT} ${TARGET_SYSROOT} COPY --from=ros_builder ${TARGET_SYSROOT} ${TARGET_SYSROOT}
@@ -69,7 +57,14 @@ RUN mkdir rmw_zenoh_ws/src -p \
&& cd rmw_zenoh_ws/src \ && cd rmw_zenoh_ws/src \
&& git clone --depth=1 -b jazzy https://github.com/ros2/rmw_zenoh.git && 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" \ RUN . "$HOME/.cargo/env" \
&& . ${TARGET_SYSROOT}/local_setup.sh \ && . ${TARGET_SYSROOT}/local_setup.sh \
@@ -95,4 +90,19 @@ FROM ${CC_PLATFORM_IMAGE} AS final
ARG ROS_ROOT ARG ROS_ROOT
ENV ROS_ROOT=${ROS_ROOT} ENV ROS_ROOT=${ROS_ROOT}
COPY --from=rmw_zenoh_builder ${TARGET_SYSROOT} ${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 WORKDIR /opt
-1
View File
@@ -159,7 +159,6 @@ RUN pip download --no-deps -d /wheels \
lark \ lark \
pyyaml \ pyyaml \
catkin_pkg \ catkin_pkg \
setuptools \
packaging \ packaging \
pyparsing \ pyparsing \
argcomplete \ argcomplete \