cmake ubuntu 交叉编译代码
时间: 2025-05-06 10:16:14 浏览: 26
### 如何在 Ubuntu 上使用 CMake 进行交叉编译配置和生成构建文件
#### 设置环境变量
为了方便操作,建议先设置一些必要的环境变量。假设 NDK 已经安装好并位于 `/path/to/android-ndk`。
```bash
export ANDROID_NDK=/path/to/android-ndk
export PATH=$PATH:$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/
```
#### 创建 `CrossCompile.cmake` 文件
创建一个名为 `CrossCompile.cmake` 的文件用于指定交叉编译所需的特定选项:
```cmake
set(CMAKE_SYSTEM_NAME Android)
set(CMAKE_SYSTEM_VERSION 21) # 设定API Level
set(ANDROID_ABI arm64-v8a) # ABI选择
set(CMAKE_ANDROID_ARCH_ABI ${ANDROID_ABI})
set(CMAKE_ANDROID_STL_TYPE c++_static)
set(CMAKE_C_COMPILER $ENV{ANDROID_NDK}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang)
set(CMAKE_CXX_COMPILER $ENV{ANDROID_NDK}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang++)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
```
此文件定义了一系列针对 Android 平台的编译属性[^2]。
#### 修改项目的 `CMakeLists.txt`
确保项目中的 `CMakeLists.txt` 正确设置了源码位置以及输出路径等基本信息:
```cmake
project(MyProject VERSION 0.1 LANGUAGES C CXX)
add_executable(main main.c)
set_target_properties(main PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
```
#### 执行 cmake 命令
进入项目根目录执行如下命令来进行实际的配置过程:
```bash
mkdir -p build && cd build
cmake .. \
-DANDROID_ABI=arm64-v8a \
-DANDROID_PLATFORM=android-21 \
-DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake \
-G "Unix Makefiles"
```
上述指令指定了目标架构、最低支持版本号、工具链文件的位置,并选择了 Unix Makefile 作为生成器。
#### 编译与链接
完成以上步骤后即可运行 make 来启动编译流程:
```bash
make VERBOSE=1
```
通过增加 `-DVERBOSE=1` 参数可以让编译过程中显示详细的命令行信息以便于调试[^3]。
阅读全文
相关推荐


















