clang+llvm+linux x86平台交叉编译arm64
下载工具链workPATH=`pwd`/toolchainmkdir -p $workPATHcd $workPATHURL_LLVM="https://github.com/llvm/llvm-project/releases/download/llvmorg-10.0.0/clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz"URL_GC
文章共1,201字 · 阅读需要大约5分钟
一键AI生成摘要,助你高效阅读
问答
·
下载工具链
#! /bin/bash
workPATH=`pwd`/toolchain
mkdir -p $workPATH
cd $workPATH
URL_LLVM="https://github.com/llvm/llvm-project/releases/download/llvmorg-10.0.0/clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz"
URL_GCC_LINARO="http://releases.linaro.org/components/toolchain/binaries/7.4-2019.02/aarch64-linux-gnu/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar.xz"
URL_SYSROOT="http://releases.linaro.org/components/toolchain/binaries/7.4-2019.02/aarch64-linux-gnu/sysroot-glibc-linaro-2.25-2019.02-aarch64-linux-gnu.tar.xz"
FILENAME_LLVM="clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz"
FILENAME_GCC_LINARO="gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar.xz"
FILENAME_SYSROOT="sysroot-glibc-linaro-2.25-2019.02-aarch64-linux-gnu.tar.xz"
wget ${URL_LLVM} -O ${FILENAME_LLVM}
wget ${URL_GCC_LINARO} -O ${FILENAME_GCC_LINARO}
wget ${URL_SYSROOT} -O ${FILENAME_SYSROOT}
tar -xvf ${FILENAME_LLVM}
tar -xvf ${FILENAME_GCC_LINARO}
tar -xvf ${FILENAME_SYSROOT}
cmake交叉编译文件 toolchain.cmake
clang 加上 -v 可以查看编译的详细信息
SET(ARCH aarch64)
SET(COMPILER CLANG)
SET(CMAKE_SYSTEM_NAME Linux )
SET(CMAKE_SYSTEM_PROCESSOR arm)
SET (CMAKE_C_COMPILER_WORKS 1)
SET (CMAKE_CXX_COMPILER_WORKS 1)
SET(triple aarch64-linux-gnu)
SET(CMAKE_C_COMPILER_TARGET ${triple})
SET(CMAKE_CXX_COMPILER_TARGET ${triple})
SET(GCC_LINARO_TOOLCHAIN_ROOT "/***/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu")
SET(CMAKE_SYSROOT "/***/sysroot-glibc-linaro-2.25-2019.02-aarch64-linux-gnu")
SET(CLANG_TOOLCHAIN_ROOT /***/clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04)
SET(CMAKE_C_COMPILER ${CLANG_TOOLCHAIN_ROOT}/bin/clang CACHE PATH "CMake C compiler")
SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -std=c99")
SET (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g")
SET (CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL} -Os -DNDEBUG")
SET (CMAKE_CEASE "${CMAKE_CEASE} -O4 -DNDEBUG")
SET (CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -O2 -g")
SET(CMAKE_CXX_COMPILER ${CLANG_TOOLCHAIN_ROOT}/bin/clang++ CACHE PATH "CMake C++ compiler")
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
SET (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g")
SET (CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -Os -DNDEBUG")
SET (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O4 -DNDEBUG")
SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O2 -g")
set(CMAKE_AR ${CLANG_TOOLCHAIN_ROOT}/bin/llvm-ar CACHE PATH "cross compiler ar")
set(CMAKE_RANLIB ${CLANG_TOOLCHAIN_ROOT}/bin/llvm-ranlib CACHE PATH "cross compiler ranlib")
set(CMAKE_LINKER ${CLANG_TOOLCHAIN_ROOT}/bin/ld.lld CACHE PATH "cross compiler linker")
set(CMAKE_NM ${CLANG_TOOLCHAIN_ROOT}/bin/llvm-nm CACHE PATH "cross compiler nm")
set(CMAKE_OBJDUMP ${CLANG_TOOLCHAIN_ROOT}/bin/llvm-objdump CACHE PATH "cross compiler objdump")
set(CMAKE_C_FLAGS "${MAKE_C_FLAGS} --gcc-toolchain=${GCC_LINARO_TOOLCHAIN_ROOT}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --gcc-toolchain=${GCC_LINARO_TOOLCHAIN_ROOT}")
# set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=${CMAKE_LINKER}")
# set(CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} -fuse-ld=${CMAKE_LINKER}")
# set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fuse-ld=${CMAKE_LINKER}")
#clang需要指定路径
include_directories(/***/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/7.4.1/aarch64-linux-gnu)
include_directories(/***/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/7.4.1)
include_directories(/***/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/libc/usr/include)
include_directories(/***/gl/include)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fuse-ld=${CMAKE_LINKER} -fuse-ld=${CMAKE_LINKER}--sysroot=${CMAKE_SYSROOT} --gcc-toolchain=${GCC_LINARO_TOOLCHAIN_ROOT}" CACHE INTERNAL "" FORCE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fuse-ld=${CMAKE_LINKER} --sysroot=${CMAKE_SYSROOT} --gcc-toolchain=${GCC_LINARO_TOOLCHAIN_ROOT}" CACHE INTERNAL "" FORCE)
SET(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT})
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
更多推荐
已为社区贡献1条内容
所有评论(0)