长期支持版本

    社区创新版本

      使用LLVM/Clang编译

      本章介绍LLVM/Clang编译的一些基本知识,并通过示例进行实际演示。更多Clang使用方法请通过clang --help命令查询。

      简介

      LLVM是一种涵盖多种编程语言和目标处理器的编译器,使用Clang作为C和C++的编译和驱动程序。Clang不仅仅可以将C, C++程序编译为LLVM中间表示的IR,也会调用所有以代码生成为目标的LLVM优化遍,直到生成最终的二进制文件。

      LLVM/Clang安装

      openEuler操作系统中通过yum源安装Clang和LLVM软件包。默认安装llvm-12

      yum install llvm
      yum install clang
      yum install lld // openEuler yum源中目前没有lld-12版本
      

      验证安装是否成功

      clang -v
      

      若返回结果中包含clang版本信息,说明安装成功。

      多版本共存支持

      openEuler LLVM/Clang 多版本支持的方式如下:

      yum包名:
      llvm<ver>{-*}
      clang<ver>{-*}
      lld<ver>{-*}
      bolt<ver>{-*}
      例如:
      clang15
      llvm15-devel
      
      安装路径:
      /usr/lib64/llvm<ver>
      例如:
      /usr/lib64/llvm15
      
      /usr/bin目录下会安装带有-<ver>后缀的可执行文件
      例如:
      /usr/bin/clang-15
      /usr/bin/lld-15
      

      目前支持的LLVM/Clang版本有

      llvm //默认llvm12
      llvm-15
      

      通过yum安装其他版本

      yum install llvm15
      yum install clang15
      yum install lld15
      

      验证安装是否成功

      clang-15 -v
      

      示例

      编译运行C/C++程序

      clang  [command line flags]  hello.c  -o  hello.o 
      ./hello.o
      
      clang++  [command line flags]  hello.cpp  -o  hello.o 
      ./hello.o
      

      指定的链接器为LLVM的lld,若不指定它则使用默认的lld。

      clang  [command line flags]  -fuse-ld=lld  hello.c  -o  hello.o 
      ./hello.o
      

      其他通用信息请参考LLVM的用户指导

      文档捉虫

      “有虫”文档片段

      问题描述

      提交类型 issue

      有点复杂...

      找人问问吧。

      PR

      小问题,全程线上修改...

      一键搞定!

      问题类型
      规范和低错类

      ● 错别字或拼写错误;标点符号使用错误;

      ● 链接错误、空单元格、格式错误;

      ● 英文中包含中文字符;

      ● 界面和描述不一致,但不影响操作;

      ● 表述不通顺,但不影响理解;

      ● 版本号不匹配:如软件包名称、界面版本号;

      易用性

      ● 关键步骤错误或缺失,无法指导用户完成任务;

      ● 缺少必要的前提条件、注意事项等;

      ● 图形、表格、文字等晦涩难懂;

      ● 逻辑不清晰,该分类、分项、分步骤的没有给出;

      正确性

      ● 技术原理、功能、规格等描述和软件不一致,存在错误;

      ● 原理图、架构图等存在错误;

      ● 命令、命令参数等错误;

      ● 代码片段错误;

      ● 命令无法完成对应功能;

      ● 界面错误,无法指导操作;

      风险提示

      ● 对重要数据或系统存在风险的操作,缺少安全提示;

      内容合规

      ● 违反法律法规,涉及政治、领土主权等敏感词;

      ● 内容侵权;

      您对文档的总体满意度

      非常不满意
      非常满意
      提交
      根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
      文档捉虫
      编组 3备份