my cross env

发布时间 2023-12-14 10:59:15作者: sciapex

 

$ 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()