# qutils **Repository Path**: bushi1234/qutils ## Basic Information - **Project Name**: qutils - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-05 - **Last Updated**: 2025-12-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 常用的代码工具 ```cmake option(nvidia-utils "Use nvidia-utils you" ON) option(QUILTS_USEING_TEST "Use test" ON) ``` ## 编译的target编译为位置无关代码可以链接进去so库中 ```cmake set_target_properties(target PROPERTIES POSITION_INDEPENDENT_CODE ON) ``` ## 隐藏动态库自身符号 ```cmake add_library(mylib SHARED src/mylib.cpp) # 隐藏所有符号(GCC/Clang 添加 -fvisibility=hidden) set_target_properties(mylib PROPERTIES CXX_VISIBILITY_PRESET hidden # 隐藏符号 VISIBILITY_INLINES_HIDDEN YES # 隐藏内联函数符号 ) ``` ## 隐藏链接进来的静态库符号 #### 方案一 ```cmake add_library(mylib SHARED src/mylib.cpp ) # 链接静态库 target_link_libraries(mylib PRIVATE mystaticlib third_party_static ) # 关键:隐藏所有静态库符号 if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") target_link_options(mylib PRIVATE "-Wl,--exclude-libs,ALL" ) endif() ``` #### 方案二 1. 创建版本脚本export.map ``` #export.map { global: public_function; # 明确导出的符号 public_class*; # 支持通配符 local: *; # 其他所有符号隐藏 }; ``` 2. CMake配置 ```cmake # 仅在 Linux/GCC 环境有效 if(UNIX AND NOT APPLE) target_link_options(mylib PRIVATE "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/export.map" ) endif() ``` ## Profile-Guided Optimization (PGO) 详解 PGO(Profile-Guided Optimization,基于性能分析的优化)是一种通过运行时数据指导编译器优化决策的编译技术,能显著提升计算密集型应用性能。以下从原理、流程、实践到最佳实践全面解析。 ```shell # 1. 生成 profiling 数据 g++ -O2 -fprofile-generate main.cpp ./a.out # 运行典型负载 # 2. 重新编译使用数据 g++ -O2 -fprofile-use main.cpp ```