news 2026/6/10 13:03:24

CLANG 交叉编译

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CLANG 交叉编译

boost+clang+

cd /root/dev_mipsel/boost # 清理之前的编译 rm -rf stage bin.v2 # 创建 clang 工具链配置 cat > user-config.jam << 'EOF' using clang : mipsel : clang++ --target=mipsel-linux-gnu --sysroot=/usr/mipsel-linux-gnu : <cxxflags>-fPIC <cxxflags>-march=mips32r2 <cxxflags>-mabi=32 <cflags>-fPIC <linkflags>--target=mipsel-linux-gnu <linkflags>--sysroot=/usr/mipsel-linux-gnu <linkflags>-fuse-ld=lld ; EOF # 配置并编译 Boost ./bootstrap.sh --with-toolset=clang # 编译 Boost ./b2 -j$(nproc) \ toolset=clang-mipsel \ target-os=linux \ architecture=mips \ address-model=32 \ binary-format=elf \ abi=o32 \ cxxflags="-fPIC --target=mipsel-linux-gnu --sysroot=/usr/mipsel-linux-gnu" \ linkflags="--target=mipsel-linux-gnu --sysroot=/usr/mipsel-linux-gnu -fuse-ld=lld" \ variant=release \ link=static \ runtime-link=shared \ --user-config=user-config.jam \ stage

CMakeLists.txt

cmake_minimum_required(VERSION 3.10) project(ppp LANGUAGES C CXX) # 设置 Clang 交叉编译标志 set(CMAKE_C_COMPILER clang) set(CMAKE_CXX_COMPILER clang++) set(CMAKE_C_COMPILER_TARGET mipsel-linux-gnu) set(CMAKE_CXX_COMPILER_TARGET mipsel-linux-gnu) # 添加目标特定的标志 add_compile_options( --target=mipsel-linux-gnu --sysroot=/usr/mipsel-linux-gnu -fPIC -march=mips32r2 -mabi=32 -O3 -std=c++17 ) # 链接器标志 add_link_options( --target=mipsel-linux-gnu --sysroot=/usr/mipsel-linux-gnu -fuse-ld=lld -static-libstdc++ ) # 查找 Boost 库 set(BOOST_ROOT "/root/dev_mipsel/boost") set(Boost_USE_STATIC_LIBS ON) set(Boost_USE_STATIC_RUNTIME OFF) find_package(Boost REQUIRED COMPONENTS system coroutine thread context regex filesystem) # 添加可执行文件 add_executable(ppp main.cpp ...) # 链接库 target_link_libraries(ppp ${Boost_LIBRARIES} ssl crypto pthread dl atomic )

Test:

cmake_minimum_required(VERSION 3.10) project(ppp LANGUAGES C CXX) # 设置 Clang 交叉编译标志 set(CMAKE_C_COMPILER clang) set(CMAKE_CXX_COMPILER clang++) set(CMAKE_C_COMPILER_TARGET mipsel-linux-gnu) set(CMAKE_CXX_COMPILER_TARGET mipsel-linux-gnu) # 添加目标特定的标志 add_compile_options( --target=mipsel-linux-gnu --sysroot=/usr/mipsel-linux-gnu -fPIC -march=mips32r2 -mabi=32 -O3 -std=c++17 ) # 链接器标志 add_link_options( --target=mipsel-linux-gnu --sysroot=/usr/mipsel-linux-gnu -fuse-ld=lld -static-libstdc++ ) # 查找 Boost 库 set(BOOST_ROOT "/root/dev_mipsel/boost") set(Boost_USE_STATIC_LIBS ON) set(Boost_USE_STATIC_RUNTIME OFF) find_package(Boost REQUIRED COMPONENTS system coroutine thread context regex filesystem) # 添加可执行文件 add_executable(ppp main.cpp ...) # 链接库 target_link_libraries(ppp ${Boost_LIBRARIES} ssl crypto pthread dl atomic )

build.SH

#!/bin/bash # build-mips-clang.sh # 设置环境变量 export CC="clang --target=mipsel-linux-gnu --sysroot=/usr/mipsel-linux-gnu" export CXX="clang++ --target=mipsel-linux-gnu --sysroot=/usr/mipsel-linux-gnu" export CFLAGS="-fPIC -march=mips32r2 -mabi=32 -O3" export CXXFLAGS="-fPIC -march=mips32r2 -mabi=32 -O3 -std=c++17" export LDFLAGS="--target=mipsel-linux-gnu --sysroot=/usr/mipsel-linux-gnu -fuse-ld=lld" export AR="llvm-ar" export RANLIB="llvm-ranlib" export STRIP="llvm-strip" # 清理并创建构建目录 rm -rf build-mips-clang mkdir build-mips-clang && cd build-mips-clang # 配置 CMake cmake .. \ -DCMAKE_SYSTEM_NAME=Linux \ -DCMAKE_SYSTEM_PROCESSOR=mipsel \ -DCMAKE_C_COMPILER=clang \ -DCMAKE_C_COMPILER_TARGET=mipsel-linux-gnu \ -DCMAKE_CXX_COMPILER=clang++ \ -DCMAKE_CXX_COMPILER_TARGET=mipsel-linux-gnu \ -DCMAKE_C_FLAGS="${CFLAGS}" \ -DCMAKE_CXX_FLAGS="${CXXFLAGS}" \ -DCMAKE_EXE_LINKER_FLAGS="${LDFLAGS}" \ -DCMAKE_SHARED_LINKER_FLAGS="${LDFLAGS}" \ -DCMAKE_AR="llvm-ar" \ -DCMAKE_RANLIB="llvm-ranlib" \ -DCMAKE_STRIP="llvm-strip" \ -DBOOST_ROOT=/root/dev_mipsel/boost \ -DBoost_USE_STATIC_LIBS=ON \ -DCMAKE_BUILD_TYPE=Release # 构建 make -j$(nproc)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 11:44:49

ASG什么是管理员双因子认证

本文档提供了ASG系列产品的维护指导。 文章目录什么是管理员双因子认证USBkey支持哪些厂商什么是管理员双因子认证 管理员双因子认证就是结合管理员登录账号和Ukey证书双重身份的认证方式。 USBkey支持哪些厂商 USBKey目前仅支持epass一个厂商&#xff0c;支持的型号为epass…

作者头像 李华
网站建设 2026/6/10 12:22:44

客服数字人上线前:HeyGem模拟应答视频预演

客服数字人上线前&#xff1a;HeyGem模拟应答视频预演 在智能客服系统日益普及的今天&#xff0c;越来越多企业开始部署AI数字人作为前端服务入口。然而&#xff0c;一个常被忽视的问题是&#xff1a;即便语音合成&#xff08;TTS&#xff09;已经足够自然&#xff0c;当这段声…

作者头像 李华
网站建设 2026/6/10 11:27:03

PHP与区块链结合实战(交易记录不可篡改方案大公开)

第一章&#xff1a;PHP与区块链结合的核心价值将PHP这一广泛应用于Web开发的服务器端脚本语言与区块链技术相结合&#xff0c;能够为传统应用系统注入去中心化、数据不可篡改和可追溯等关键特性。这种融合不仅扩展了PHP的应用边界&#xff0c;也为中小企业提供了低成本接入区块…

作者头像 李华
网站建设 2026/6/10 12:30:25

低轨卫星姿态调整系统的抗辐照设计与工程实现

摘要&#xff1a;随着低轨卫星星座技术的快速发展&#xff0c;空间辐射环境对星载电子系统的可靠性威胁日益凸显。本文系统分析了低轨卫星姿态调整系统的抗辐照设计技术体系&#xff0c;重点围绕国科安芯推出的AS32S601型抗辐照微控制器单元&#xff08;MCU&#xff09;的加固技…

作者头像 李华