长期支持版本

    使用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备份