$ cat set_crossenv.sh #export PREFIX=/usr #export ROS2_INSTALL_PREFIX=/work/research/ros2/humble_orin/install # Linux ORINX export TOOLCHAIN_ROOT=/work/sdk/linux/arm/6060/toolchains/aarch64--glibc--stable-2022.03-1 export THIRD_PARTY=/work/research/third_party/linux/orin export PATH=$TOOLCHAIN_ROOT/bin:$PATH export SYSROOT=$TOOLCHAIN_ROOT/aarch64-buildroot-linux-gnu/sysroot export HOST=x86_64 export TARGET=aarch64-linux export CC="$TARGET-gcc --sysroot=$SYSROOT" export CXX="$TARGET-g++ --sysroot=$SYSROOT" export CPP="$TARGET-gcc -E --sysroot=$SYSROOT" export LD="$TARGET-ld --sysroot=$SYSROOT" export AR=$TARGET-ar export AS=$TARGET-as export NM=$TARGET-nm export GDB=$TARGET-gdb export OBJDUMP=$TARGET-objdump export OBJCOPY=$TARGET-objcopy export RANLIB=$TARGET-ranlib export READELF=$TARGET-readelf export STRIP=$TARGET-strip export CFLAGS=" -fstack-protector-all -I$THIRD_PARTY/include " export LDFLAGS=" -L$THIRD_PARTY/lib " export CXXFLAGS=" -fstack-protector-all " export PKG_CONFIG_SYSROOT_DIR=$SYSROOT export PKG_CONFIG_PATH=$SYSROOT/usr/lib/pkgconfig:$SYSROOT/usr/share/pkgconfig export PYTHON_SOABI=cpython-38m-$TARGET uidq2578@hzh57256u<10:52:00>:/work/research/ $ cat generic_linux_orin_aarch64.cmake # # Automatically generated file; DO NOT EDIT. # CMake toolchain file for Buildroot # # Set toolchain path # set(ROS2_INSTALL_PREFIX "/work/research/ros2/humble_orin/install") set(THIRD_PARTY_PATH "/work/research/third_party/linux/orin") set(TOOLCHAIN_ROOT "/work/sdk/linux/arm/6060/toolchains/aarch64--glibc--stable-2022.03-1") # In order to allow the toolchain to be relocated, we calculate the # HOST_DIR based on this file's location: $(HOST_DIR)/share/buildroot # and store it in RELOCATED_HOST_DIR. # All the other variables that need to refer to HOST_DIR will use the # RELOCATED_HOST_DIR variable. string(REPLACE "/share/buildroot" "" RELOCATED_HOST_DIR ${CMAKE_CURRENT_LIST_DIR}) # Point cmake to the location where we have our custom modules, # so that it can find our custom platform description. list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}) set(CMAKE_SYSTEM_VERSION 1) set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_PROCESSOR aarch64) set(CMAKE_CROSSCOMPILING true) # Set the {C,CXX}FLAGS appended by CMake depending on the build type # defined by Buildroot. CMake defaults these variables with -g and/or # -O options, and they are appended at the end of the argument list, # so the Buildroot options are overridden. Therefore these variables # have to be cleared, so that the options passed in CMAKE_C_FLAGS do # apply. # # Note: # if the project forces some of these flag variables, Buildroot is # screwed up and there is nothing Buildroot can do about that :( set(CMAKE_C_FLAGS_DEBUG "" CACHE STRING "Debug CFLAGS") set(CMAKE_CXX_FLAGS_DEBUG "" CACHE STRING "Debug CXXFLAGS") set(CMAKE_C_FLAGS_RELEASE " -DNDEBUG" CACHE STRING "Release CFLAGS") set(CMAKE_CXX_FLAGS_RELEASE " -DNDEBUG" CACHE STRING "Release CXXFLAGS") # Build type from the Buildroot configuration set(CMAKE_BUILD_TYPE Release CACHE STRING "Buildroot build configuration") # Buildroot defaults flags. # If you are using this toolchainfile.cmake file outside of Buildroot and # want to customize the compiler/linker flags, then: # * set them all on the cmake command line, e.g.: # cmake -DCMAKE_C_FLAGS="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -Dsome_custom_flag" ... # * and make sure the project's CMake code extends them like this if needed: # set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Dsome_definitions") # set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector-all -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -I${THIRD_PARTY_PATH}/include " CACHE STRING "Buildroot CFLAGS") # set(CMAKE_CXX_FLAGS "-fstack-protector-all -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -I${THIRD_PARTY_PATH}/include " CACHE STRING "Buildroot CXXFLAGS") set(CMAKE_SHARED_LINKER_FLAGS " -L${THIRD_PARTY_PATH}/lib " CACHE STRING "Buildroot LDFLAGS for shared libraries") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector-all -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os" CACHE STRING "Buildroot CFLAGS") set(CMAKE_CXX_FLAGS "-fstack-protector-all -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os" CACHE STRING "Buildroot CXXFLAGS") set(CMAKE_SHARED_LINKER_FLAGS "" CACHE STRING "Buildroot LDFLAGS for shared libraries") set(CMAKE_MODULE_LINKER_FLAGS "" CACHE STRING "Buildroot LDFLAGS for module libraries") set(CMAKE_EXE_LINKER_FLAGS "" CACHE STRING "Buildroot LDFLAGS for executables") set(CMAKE_INSTALL_SO_NO_EXE 0) set(RELOCATED_HOST_DIR ${TOOLCHAIN_ROOT}) set(CMAKE_PROGRAM_PATH "${RELOCATED_HOST_DIR}/bin") set(CMAKE_SYSROOT "${RELOCATED_HOST_DIR}/aarch64-buildroot-linux-gnu/sysroot") set(CMAKE_FIND_ROOT_PATH "${RELOCATED_HOST_DIR}/aarch64-buildroot-linux-gnu/sysroot") # Third party libs include_directories(${THIRD_PARTY_PATH}/include) link_directories(${THIRD_PARTY_PATH}/lib) #set(CMAKE_FIND_ROOT_PATH $ENV{ROS2_INSTALL_PREFIX} $ENV{SURVEY_INSTALL_PREFIX}) set(CMAKE_FIND_ROOT_PATH ${THIRD_PARTY_PATH} ${ROS2_INSTALL_PREFIX} ${ROS2_INSTALL_PREFIX}/../local_lib) # /work/research/ros2/ros2_galactic_orin/dev/events-executor/install # /work/research/ros2/ros2_galactic_orin/dev/performance/install) # Set ROS2 install path set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set(ENV{PKG_CONFIG_SYSROOT_DIR} "${RELOCATED_HOST_DIR}/aarch64-buildroot-linux-gnu/sysroot") # This toolchain file can be used both inside and outside Buildroot. set(CMAKE_C_COMPILER "${RELOCATED_HOST_DIR}/bin/aarch64-linux-gcc") set(CMAKE_CXX_COMPILER "${RELOCATED_HOST_DIR}/bin/aarch64-linux-g++") if(0) set(CMAKE_Fortran_FLAGS_DEBUG "" CACHE STRING "Debug Fortran FLAGS") set(CMAKE_Fortran_FLAGS_RELEASE " -DNDEBUG" CACHE STRING "Release Fortran FLAGS") set(CMAKE_Fortran_FLAGS "-Os" CACHE STRING "Buildroot FCFLAGS") set(CMAKE_Fortran_COMPILER "${RELOCATED_HOST_DIR}/bin/aarch64-buildroot-linux-gnu-gfortran") endif()