LLVM在Ubuntu下用CMake进行源码编译

源码编译

之前找到的教程大部分是预编译的代码解压安装
源码编译参考文献:

源码的位置不要找错了,是这个仓库

源码所属仓库 llvm/llvm-project.

准备环境

Ubuntu
最好可以准备ninja

sudo apt-get install build-essential zlib1g-dev python

仅为自己安装

笔者最终使用的是服务器集群进行编译,没有root权限,所以只能安装到自己的用户目录~

apt download <package>
# 会下载一个deb文件

dpkg -x <package>.deb ~/path/to/install

vim ~/.bashrc

进入vim编辑

export PATH = $PATH:~/path/to/install/usr/bin # 这种安装会在指定目录下创建usr/bin目录

编辑后刷新环境变量

### 如何在 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]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值