C++_跨平台编译_cmakefile.txt中_添加内容, 包含
cmakefile.txt中
1. 系统架构(aarch64)
2. gcc g++编译器位置
3. 架构指定: march
4. 你的root一些基础的lib, bin文件路径 (YOUR_SYSROOT)
# 在x86上, 编译linux系统下 aarch64版本的库文件:
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_PROCESSOR aarch64)
SET(CMAKE_SYSROOT ${YOUR_SYSROOT})SET(CMAKE_C_COMPILER /usr/bin/aarch64-linux-gnu-gcc-7)
SET(CMAKE_CXX_COMPILER /usr/bin/aarch64-linux-gnu-g++-7)SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv8-a")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=armv8-a")# 可选:
SET(CMAKE_Fortran_COMPILER aarch64-linux-gnu-gfortran-7)
SET(CMAKE_AR aarch64-linux-gnu-ar)
SET(CMAKE_RANLIB aarch64-linux-gnu-ranlib)
SET(CMAKE_STRIP aarch64-linux-gnu-strip)# SET(CMAKE_THREAD_LIBS_INIT "-lpthread")
注意: 若有多个 CMakefile.txt, 以上内容添加一个就可以.
shell脚本形式
然后若不想修改CMakefile.txt, 可以使用your_shell.sh也是一样的
进入 src所在目录, 新建 your_shell.sh
如命名为"build_arm64_in_x86.sh", 内容如下:
#!/bin/bash
MYARM_SYSROOT=/your-sysroot
# 设置环境变量
# specify cross toolchain
# SET(CMAKE_C_COMPILER /usr/bin/aarch64-linux-gnu-gcc-7)
# SET(CMAKE_CXX_COMPILER /usr/bin/aarch64-linux-gnu-g++-7)
# SET(CMAKE_Fortran_COMPILER aarch64-linux-gnu-gfortran-7)
# SET(CMAKE_AR aarch64-linux-gnu-ar)
# SET(CMAKE_RANLIB aarch64-linux-gnu-ranlib)
# SET(CMAKE_STRIP aarch64-linux-gnu-strip)
export CC=/usr/bin/aarch64-linux-gnu-gcc-7
export CXX=/usr/bin/aarch64-linux-gnu-g++-7
export FC=/usr/bin/aarch64-linux-gnu-gfortran-7
export AR=/usr/bin/aarch64-linux-gnu-ar
export RANLIB=/usr/bin/aarch64-linux-gnu-ranlib
export STRIP=/usr/bin/aarch64-linux-gnu-strip
# 其他定制设置 (可选?)
# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv8-a")
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=armv8-a")
export CFLAGS="-march=armv8-a"
export CXXFLAGS="-march=armv8-a"
export CMAKE_THREAD_LIBS_INIT="-lpthread"
mkdir -p build && cd build
# 调用 CMake
../cmake-3.29.2-linux-x86_64/bin/cmake --version
../cmake-3.29.2-linux-x86_64/bin/cmake \
-DCMAKE_SYSTEM_NAME=Linux \
-DCMAKE_SYSTEM_PROCESSOR=aarch64 \
-DCMAKE_SYSROOT=${MYARM_SYSROOT} \
..
# 构建步骤
make -j1