news 2026/4/23 15:28: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/4/23 10:13:38

当历史智慧遇见测试前沿

2025年12月26日&#xff0c;我们迎来毛泽东主席诞辰132周年纪念日。这一天不仅是历史的回响&#xff0c;更是现代职场的一面镜子。对软件测试从业者而言&#xff0c;测试工作如同“革命征程”——需要精准的战略、坚韧的团队协作和不懈的质量追求。毛泽东的“群众路线”和“持久…

作者头像 李华
网站建设 2026/4/23 10:14:09

华为服务器中Mindie镜像的部署及启动方法

一、部署方法 首先要安装好Docker,然后点开网址https://www.hiascend.com/developer/ascendhub/detail/af85b724a7e5469ebd7ea13c3439d48f 拉取镜像需要申请权限: 注册登录后,即可提交申请,一般需要一个工作日,等审核通过后,点击下载即可弹出如下提示框: 按照上述方法…

作者头像 李华
网站建设 2026/4/15 15:06:18

揭秘PHP图像识别结果解析:5个关键步骤让你快速掌握核心技术

第一章&#xff1a;PHP图像识别结果解析概述在现代Web应用开发中&#xff0c;图像识别技术正逐步成为提升用户体验与系统智能化水平的重要手段。PHP作为广泛使用的服务器端脚本语言&#xff0c;虽然并非专为人工智能计算设计&#xff0c;但通过集成外部识别服务或调用本地模型A…

作者头像 李华
网站建设 2026/4/23 9:50:52

生成结果历史区域缩略图加载缓慢优化建议

生成结果历史区域缩略图加载缓慢优化建议 在AI数字人视频生成系统逐渐普及的今天&#xff0c;用户不再满足于“能用”&#xff0c;而是追求“好用”——尤其是在批量处理任务时&#xff0c;界面响应速度直接决定了工作效率。HeyGem这类基于Web的视频生成平台&#xff0c;允许用…

作者头像 李华