news 2026/6/26 4:14:28

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/12 1:26:59

【高并发场景下的PHP WebSocket】:如何实现毫秒级自动重连

第一章&#xff1a;高并发场景下PHP WebSocket断线重连的挑战 在高并发系统中&#xff0c;PHP基于WebSocket实现实时通信时&#xff0c;连接的稳定性成为核心问题之一。网络波动、服务端资源限制或客户端设备状态变化&#xff0c;均可能导致连接中断。而用户期望的是无感知的持…

作者头像 李华
网站建设 2026/6/17 4:42:58

ASG更新CA根证书后https访问设备不能打开设备登录界面

本文档提供了ASG系列产品的维护指导。 文章目录更新CA根证书后https访问设备不能打开设备登录界面更新CA根证书后https访问设备不能打开设备登录界面 在管理员双因子认证功能已正常开启的情况下&#xff0c;如果设备CA证书发生变更&#xff0c;需要先关闭管理员双因子认证功能…

作者头像 李华
网站建设 2026/6/21 21:58:38

仅剩3个名额!免费领取PHP智能家居温控源码包(限时福利)

第一章&#xff1a;PHP智能家居温控系统概述随着物联网技术的发展&#xff0c;智能家居系统逐渐走入日常生活。其中&#xff0c;基于PHP构建的温控系统因其良好的可扩展性和低成本部署优势&#xff0c;成为中小型家庭环境控制的理想选择。该系统通过Web界面实现对室内温度的实时…

作者头像 李华
网站建设 2026/6/18 7:24:39

PHP 8.7新函数全面解读,这些特性将彻底改变你的编码方式

第一章&#xff1a;PHP 8.7新函数全面解读&#xff0c;这些特性将彻底改变你的编码方式更智能的联合类型推导 PHP 8.7 引入了增强的联合类型&#xff08;Union Types&#xff09;处理机制&#xff0c;编译器能够在更多上下文中自动推导变量的联合类型&#xff0c;减少手动声明负…

作者头像 李华
网站建设 2026/6/10 23:56:02

周大生钻石镶嵌:HeyGem制作情侣对戒诞生过程短片

HeyGem 数字人视频生成系统在周大生情侣对戒项目中的工程实践 在品牌营销内容日益“内卷”的今天&#xff0c;一条高质量的宣传短片动辄需要数日拍摄、反复调试灯光与演员表现力&#xff0c;尤其对于珠宝这类高度依赖情感表达和细节呈现的行业&#xff0c;传统制作流程的成本与…

作者头像 李华
网站建设 2026/6/18 11:12:15

HeyGem运行实时日志.log内容结构解读

HeyGem运行实时日志.log内容结构解读 在数字人视频生成系统逐渐从实验走向落地的今天&#xff0c;一个常被忽视但至关重要的组件正悄然发挥着核心作用——日志系统。HeyGem 作为一款基于大模型驱动的音视频融合工具&#xff0c;在批量处理场景下面临着任务复杂度高、执行周期长…

作者头像 李华