news 2026/6/26 0:45:48

【clang】ubuntu 22.04 使用clang编译qt项目,并采用极致性能优化参数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【clang】ubuntu 22.04 使用clang编译qt项目,并采用极致性能优化参数

build_with_clang.sh

#!/bin/bash # ============================================================================== # Qt 项目极致性能构建脚本 v3.0 (修复 qmake 编译器检测问题) # # 主要变更: # - 使用 -spec linux-clang 强制指定 Clang 工具链规格 # - 显式设置所有必要的编译器和链接器变量 # ============================================================================== # --- 1. 脚本初始化 --- set -e set -u set -o pipefail echo "--- [1] 开始极致性能构建流程 (源码外构建模式) ---" # --- 2. 定义并准备构建目录 --- BUILD_DIR="build" if [ -d "$BUILD_DIR" ]; then echo "--- [2] 发现旧构建目录 '$BUILD_DIR',正在删除... ---" rm -rf "$BUILD_DIR" fi echo "--- [2] 创建新构建目录 '$BUILD_DIR'... ---" mkdir -p "$BUILD_DIR" # --- 3. 设置完整 LLVM/Clang 工具链环境变量 --- echo "--- [3] 设置 Clang/LLVM 编译环境变量 ---" # 强制指定 qmake 使用的 C++ 编译器 export QMAKE_CXX=clang++ # 强制指定 qmake 使用的链接器 export QMAKE_LINK=ld.lld # 强制指定 qmake 使用的 C 编译器 export QMAKE_CC=clang # 强制指定 qmake 使用的归档器 export QMAKE_AR=llvm-ar # 强制指定 qmake 使用的 ranlib export QMAKE_RANLIB=llvm-ranlib # 为了兼容性,也设置传统的环境变量 export CXX=clang++ export CC=clang export LD=ld.lld export AR=llvm-ar export RANLIB=llvm-ranlib echo " QMAKE_CXX = $QMAKE_CXX" echo " QMAKE_LINK = $QMAKE_LINK" # --- 4. 进入构建目录并执行 qmake --- echo "--- [4] 进入构建目录并生成 Makefile... ---" ( cd "$BUILD_DIR" # 执行 qmake 命令,并明确指定工具链规格 # -spec linux-clang: 告诉 qmake 使用为 Linux Clang 预设的配置文件,这是解决问题的关键 # ..: 指向项目根目录 # CONFIG+=release: 启用发布模式 # 后面的优化标志保持不变 qmake -spec linux-clang .. CONFIG+=release \ QMAKE_CXXFLAGS_RELEASE="-O3 -march=native -flto" \ QMAKE_LFLAGS_RELEASE="-O3 -flto" # --- 5. 执行 make 进行编译 --- echo "--- [5] 开始并行编译项目... ---" CORES=$(nproc) make -j${CORES} 2>&1 | tee build.log ) # --- 6. 构建完成 --- echo "" echo "==============================================" echo " 构建完成!" echo "==============================================" echo "所有构建产物已生成在 '$BUILD_DIR' 目录中。" echo "详细的编译日志请查看: $BUILD_DIR/build.log" exit 0

编译日志

--- [1] 开始极致性能构建流程 (源码外构建模式) --- --- [2] 发现旧构建目录 'build',正在删除... --- --- [2] 创建新构建目录 'build'... --- --- [3] 设置 Clang/LLVM 编译环境变量 --- QMAKE_CXX = clang++ QMAKE_LINK = ld.lld --- [4] 进入构建目录并生成 Makefile... --- Info: creating stash file /home/yeqiang/untitled/build/.qmake.stash --- [5] 开始并行编译项目... --- clang++ -c -pipe -O3 -march=native -flto -std=gnu++11 -Wall -Wextra -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_CORE_LIB -I../../untitled -I. -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-clang -o main.o ../main.cpp clang++ -ccc-gcc-name g++ -O3 -flto -o untitled main.o /usr/lib/x86_64-linux-gnu/libQt5Core.so -lpthread ============================================== 构建完成! ============================================== 所有构建产物已生成在 'build' 目录中。 详细的编译日志请查看: build/build.log
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/25 18:25:46

Lazy Loading、 Singleton 与 Bridge:在 JavaScript 和 ABAP 里把对象初始化写得更省、更稳、更易扩展

很多系统的性能问题,并不是出在所谓的 算法不够快,而是出在 对象创建得太早、太频繁、太随意。一旦把初始化时机、实例数量、职责边界这三件事处理好,代码往往会同时获得三种收益:启动更轻、运行更稳、后续更好改。 这篇文章用一个非常生活化的交互场景来拆解思路:用户点…

作者头像 李华
网站建设 2026/6/25 16:39:06

用 ABAP 模拟 Currying:把参数绑定这件事做到极致

用 ABAP 模拟 Currying:把参数绑定这件事做到极致 很多 ABAP 开发者习惯了命令式写法:变量先声明、循环里改状态、过程里不断 WRITE 或更新内表。换到函数式编程的语境,会突然发现一件很有趣的事:复杂需求不一定要靠越来越长的过程来堆出来,也可以靠一组小而专的函数,像…

作者头像 李华
网站建设 2026/6/24 17:25:13

错过这8个R语言函数,你就等于放弃了环境数据的准确性

第一章:环境数据异常值处理的重要性在环境监测系统中,传感器采集的数据常因设备故障、传输干扰或极端自然事件而产生异常值。这些异常若未被及时识别与处理,将严重影响数据分析的准确性,甚至导致错误的环境评估结论。异常值的影响…

作者头像 李华
网站建设 2026/6/25 0:56:45

CIKM‘25 | 联盟营销场景下,基于时空动态网络的两阶段传播规模预测

▐ 摘要阿里妈妈的联盟营销生态刻画了商品在淘客和用户间的推广和传播路径,形成了庞大的时空网络传播图。淘客推广者 (Promoter) 对商品的推广量,反应了淘客推广商品的积极性,决定了淘客推广所需要花费的渠道资源和可能获得的收益。如何准确预…

作者头像 李华
网站建设 2026/6/24 20:35:24

音频格式完全指南:如何为不同场景选择最佳格式

音频格式完全指南:如何为不同场景选择最佳格式 【免费下载链接】spotify-downloader Download your Spotify playlists and songs along with album art and metadata (from YouTube if a match is found). 项目地址: https://gitcode.com/GitHub_Trending/sp/spo…

作者头像 李华
网站建设 2026/6/25 0:56:41

DataEase 终极部署指南:从零到一的完整教程

DataEase 终极部署指南:从零到一的完整教程 【免费下载链接】dataease DataEase: 是一个开源的数据可视化分析工具,支持多种数据源以及丰富的图表类型。适合数据分析师和数据科学家快速创建数据可视化报表。 项目地址: https://gitcode.com/GitHub_Tre…

作者头像 李华