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 15:11:47

Java--Stream流详解,零基础入门到精通,收藏这篇就够了

目录 一、什么是反射&#xff1f; 二、反射的用途 三、获取Class对象 四、Class类型的对象使用场景1 五、Class类型的对象使用场景2 六、通过反射创建对象 七、使用 Java 反射机制获取和调用类的构造方法&#xff0c;访问私有构造方法并创建对象 八、通过反射&#xff…

作者头像 李华
网站建设 2026/6/10 14:57:35

【物联网设备状态异常预警系统】:用PHP+Swoole构建毫秒级响应平台

第一章&#xff1a;物联网设备状态异常预警系统概述物联网设备状态异常预警系统是现代智能运维体系中的关键组件&#xff0c;旨在实时监控海量联网设备的运行状态&#xff0c;及时发现并预警潜在故障&#xff0c;从而提升系统可靠性与运维效率。该系统通过采集设备传感器数据、…

作者头像 李华
网站建设 2026/6/10 14:55:06

从零开始用PHP写区块链交易记录,你也能成为架构高手

第一章&#xff1a;从零开始理解区块链核心概念区块链是一种去中心化的分布式账本技术&#xff0c;其核心目标是实现数据的不可篡改、可追溯和高度透明。它通过将数据组织成“区块”并按时间顺序链接形成“链”结构&#xff0c;确保所有参与者都能共享一致的状态。区块与链式结…

作者头像 李华
网站建设 2026/6/10 14:57:24

【高可用PHP微服务系统构建】:服务发现设计模式的3种高级用法

第一章&#xff1a;高可用PHP微服务系统中的服务发现核心概念在构建高可用的PHP微服务架构中&#xff0c;服务发现是实现动态通信与弹性扩展的核心机制。随着实例数量频繁变化&#xff0c;手动维护服务地址列表已不可行&#xff0c;服务发现机制允许服务自动注册与查找&#xf…

作者头像 李华
网站建设 2026/6/10 13:08:41

HuggingFace镜像网站加速HeyGem模型下载教程

HuggingFace镜像网站加速HeyGem模型下载教程 在AI数字人技术快速落地的今天&#xff0c;越来越多开发者尝试部署本地化的视频生成系统。然而一个看似简单却频繁卡住项目进度的问题浮出水面&#xff1a;如何稳定、高效地下载动辄十几GB的开源模型&#xff1f; 尤其是像 HeyGem 这…

作者头像 李华