Skip to main content
Redhat Developers  Logo
  • Products

    Featured

    • Red Hat Enterprise Linux
      Red Hat Enterprise Linux Icon
    • Red Hat OpenShift AI
      Red Hat OpenShift AI
    • Red Hat Enterprise Linux AI
      Linux icon inside of a brain
    • Image mode for Red Hat Enterprise Linux
      RHEL image mode
    • Red Hat OpenShift
      Openshift icon
    • Red Hat Ansible Automation Platform
      Ansible icon
    • Red Hat Developer Hub
      Developer Hub
    • View All Red Hat Products
    • Linux

      • Red Hat Enterprise Linux
      • Image mode for Red Hat Enterprise Linux
      • Red Hat Universal Base Images (UBI)
    • Java runtimes & frameworks

      • JBoss Enterprise Application Platform
      • Red Hat build of OpenJDK
    • Kubernetes

      • Red Hat OpenShift
      • Microsoft Azure Red Hat OpenShift
      • Red Hat OpenShift Virtualization
      • Red Hat OpenShift Lightspeed
    • Integration & App Connectivity

      • Red Hat Build of Apache Camel
      • Red Hat Service Interconnect
      • Red Hat Connectivity Link
    • AI/ML

      • Red Hat OpenShift AI
      • Red Hat Enterprise Linux AI
    • Automation

      • Red Hat Ansible Automation Platform
      • Red Hat Ansible Lightspeed
    • Developer tools

      • Red Hat Trusted Software Supply Chain
      • Podman Desktop
      • Red Hat OpenShift Dev Spaces
    • Developer Sandbox

      Developer Sandbox
      Try Red Hat products and technologies without setup or configuration fees for 30 days with this shared Openshift and Kubernetes cluster.
    • Try at no cost
  • Technologies

    Featured

    • AI/ML
      AI/ML Icon
    • Linux
      Linux Icon
    • Kubernetes
      Cloud icon
    • Automation
      Automation Icon showing arrows moving in a circle around a gear
    • View All Technologies
    • Programming Languages & Frameworks

      • Java
      • Python
      • JavaScript
    • System Design & Architecture

      • Red Hat architecture and design patterns
      • Microservices
      • Event-Driven Architecture
      • Databases
    • Developer Productivity

      • Developer productivity
      • Developer Tools
      • GitOps
    • Secure Development & Architectures

      • Security
      • Secure coding
    • Platform Engineering

      • DevOps
      • DevSecOps
      • Ansible automation for applications and services
    • Automated Data Processing

      • AI/ML
      • Data Science
      • Apache Kafka on Kubernetes
      • View All Technologies
    • Start exploring in the Developer Sandbox for free

      sandbox graphic
      Try Red Hat's products and technologies without setup or configuration.
    • Try at no cost
  • Learn

    Featured

    • Kubernetes & Cloud Native
      Openshift icon
    • Linux
      Rhel icon
    • Automation
      Ansible cloud icon
    • Java
      Java icon
    • AI/ML
      AI/ML Icon
    • View All Learning Resources

    E-Books

    • GitOps Cookbook
    • Podman in Action
    • Kubernetes Operators
    • The Path to GitOps
    • View All E-books

    Cheat Sheets

    • Linux Commands
    • Bash Commands
    • Git
    • systemd Commands
    • View All Cheat Sheets

    Documentation

    • API Catalog
    • Product Documentation
    • Legacy Documentation
    • Red Hat Learning

      Learning image
      Boost your technical skills to expert-level with the help of interactive lessons offered by various Red Hat Learning programs.
    • Explore Red Hat Learning
  • Developer Sandbox

    Developer Sandbox

    • Access Red Hat’s products and technologies without setup or configuration, and start developing quicker than ever before with our new, no-cost sandbox environments.
    • Explore Developer Sandbox

    Featured Developer Sandbox activities

    • Get started with your Developer Sandbox
    • OpenShift virtualization and application modernization using the Developer Sandbox
    • Explore all Developer Sandbox activities

    Ready to start developing apps?

    • Try at no cost
  • Blog
  • Events
  • Videos

Getting started with llvm-toolset

 

November 1, 2017
Tom Stellard
Related topics:
Developer ToolsLinux
Related products:
Developer ToolsRed Hat Enterprise Linux

Share:

    llvm-toolset is a new software collection that packages together a number of the tools distributed by the LLVM project, including: LLVM tools and libraries, clang, clang-tools-extra, and lldb.

    Installing llvm-toolset

    For updated installation instructions, see How to install Clang/LLVM 6 on Red Hat Enterprise Linux.

    Clang/LLVM 5.x is packaged in as llvm-toolset-7, which is available in the rhel-7-server-devtools-rpms repo for RHEL 7. (If you don’t already have RHEL 7, Red Hat offers no-cost RHEL subscriptions for development use here.) You can use subscription manager to enable the repo, then yum to install it as usual.

    # subscription-manager repos --enable rhel-7-server-devtools-rpms
    # yum install llvm-toolset-7

    llvm-toolset-7 is a metapackage that will pull in the llvm, clang, clang-tools-extra, and lldb packages.

    You can verify the packages are installed correctly by checking the versions of the various tools:

    $ scl enable llvm-toolset-7 'clang -v'
    Target: x86_64-unknown-linux-gnu
    Thread model: posix
    InstalledDir: /opt/rh/llvm-toolset-7/root/usr/bin
    Found candidate GCC installation: /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7
    Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/4.8.5
    Selected GCC installation: /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7
    Candidate multilib: .;@m64
    Candidate multilib: 32;@m32
    Selected multilib: .;@m64

    Note that clang will use the standard libraries and linker distributed with devtoolset-7. These dependencies are automatically installed when you install llvm-toolset-7.

    $ scl enable llvm-toolset-7 'lldb -v'
    lldb version 4.0.1

    Running through scl for every command can be a nuisance, but it’s easy to start a shell with the appropriate paths enabled:

    $ scl enable llvm-toolset-7 bash

    The rest of this post assumes such an enabled shell.

    Trying it out

    You can use a simple hello world program to experiment with some of the tools distributed with llvm-toolset. Start by creating a simple c file called hello.c:

    #include <stdio.h>
    int main()
    {
    int ret;
    printf("hello world!");
    return ret;
    }

    clang-format is a tool for reformatting source code. It supports a number of built-in coding styles and you can define your own. Use clang-format to change the coding style (clang-format defaults to LLVM coding style):

    $ clang-format -i hello.c
    #include <stdio.h>
    int main() {
      int ret;
      printf("hello world!");
      return ret;
    }

    clang-tidy is a tool that can be used to catch common programming errors. It supports many different kinds of checks and is integrated with the clang static analyzer. Use clang-tidy to check for programmer errors:

    $ clang-tidy -checks=all hello.c --
    
    1 warning generated.
    hello.c:5:3: warning: Undefined or garbage value returned to caller [clang-analyzer-core.uninitialized.UndefReturn]
    return ret;
    ^
    hello.c:3:3: note: 'ret' declared without an initial value
    int ret;
    ^
    hello.c:5:3: note: Undefined or garbage value returned to caller
    return ret;
    ^

    Compile your code using clang:

    $ clang -g -o hello hello.c

    Debug the program using lldb:

    $ lldb ./hello
    (lldb) target create "./hello"
    Current executable set to './hello' (x86_64).
    (lldb) b main
    Breakpoint 1: where = hello`main + 25 at hello.c:4, address = 0x0000000000400529
    (lldb) run
    * thread #1, name = 'hello', stop reason = breakpoint 1.1
    frame #0: hello`main at hello.c:4
      1 #include
      2 int main() {
      3 int ret;
    > 4 printf("hello world!");
      5 return ret;
      6 }

    Further Reading

    For more information, please visit these resources:

    llvm-toolset-7 online documentation
    Official LLVM online documentation
    Official clang online documentation

    Last updated: March 23, 2023

    Recent Posts

    • LLM Compressor: Optimize LLMs for low-latency deployments

    • How to set up NVIDIA NIM on Red Hat OpenShift AI

    • Leveraging Ansible Event-Driven Automation for Automatic CPU Scaling in OpenShift Virtualization

    • Python packaging for RHEL 9 & 10 using pyproject RPM macros

    • Kafka Monthly Digest: April 2025

    What’s up next?

     

    Red Hat Developers logo LinkedIn YouTube Twitter Facebook

    Products

    • Red Hat Enterprise Linux
    • Red Hat OpenShift
    • Red Hat Ansible Automation Platform

    Build

    • Developer Sandbox
    • Developer Tools
    • Interactive Tutorials
    • API Catalog

    Quicklinks

    • Learning Resources
    • E-books
    • Cheat Sheets
    • Blog
    • Events
    • Newsletter

    Communicate

    • About us
    • Contact sales
    • Find a partner
    • Report a website issue
    • Site Status Dashboard
    • Report a security problem

    RED HAT DEVELOPER

    Build here. Go anywhere.

    We serve the builders. The problem solvers who create careers with code.

    Join us if you’re a developer, software engineer, web designer, front-end designer, UX designer, computer scientist, architect, tester, product manager, project manager or team lead.

    Sign me up

    Red Hat legal and privacy links

    • About Red Hat
    • Jobs
    • Events
    • Locations
    • Contact Red Hat
    • Red Hat Blog
    • Inclusion at Red Hat
    • Cool Stuff Store
    • Red Hat Summit

    Red Hat legal and privacy links

    • Privacy statement
    • Terms of use
    • All policies and guidelines
    • Digital accessibility

    Report a website issue

    OSZAR »