银河麒麟V10操作系统编译LLVM18踩坑记录

2024-05-14 10:52

本文主要是介绍银河麒麟V10操作系统编译LLVM18踩坑记录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、简述

        要在银河麒麟V10操作系统上编译一个LLVM18,这个系统之前确实也没有用过,所以开始了一系列的摸排工作,进行一下记录。

        首先肯定是要搞一个系统,所以去到银河麒麟的网站,填写了一个申请

产品试用申请·国产操作系统、麒麟操作系统——麒麟软件官方网站麒麟软件是专业从事国产操作系统研发和产业化的高新技术企业,旗下拥有银河麒麟、中标麒麟、星光麒麟三大国产操作系统品牌,服务国内用户超过6万家。icon-default.png?t=N7T8https://www.kylinos.cn/support/trial.html?trial=356519        然后跳到下载界面,发现了若干版本的,最后选择了兆芯版,因为是x86_64的,要编译的软件也是主要支持这个,另外也没有别的cpu架构的设备。

        安装过程倒也没有什么特别的,使用Hyper-V 管理器安装的虚拟机,和其它的虚拟机安装也差别不大。

        安装流程可以参考下面的链接。

Hyper-V安装centos8时遇到的一些问题整理_hyper-v the signed image's hash is not allowed-CSDN博客文章浏览阅读367次,点赞5次,收藏3次。有三种说法,一是说虚拟机上启用了安全启动,可以找到关闭它,我自己的状况就是启用安全启动了,关闭就好了。另外的说法是BOSS 卡固件或驱动程序已过时或与虚拟机不兼容。建议您更新BOSS卡固件或驱动程序。第三个可能原因是P2V转换工具(就像Disk2VHD)没有正确或完整地捕获BOSS卡。_hyper-v the signed image's hash is not allowedhttps://skydance.blog.csdn.net/article/details/138509730

2、编译LLVM

        虚拟机已经搞完了,那就开始编译软件了,首先要下载软件,所以要开始配置git,感觉git协议的比https协议的连接要更稳定,所以配置账号、邮箱、密钥什么的。

        配置完成,然后下载源码LLVM的源码。

git clone --depth 1 git@github.com:llvm/llvm-project.git

        源码下载完成。

(1)问题1:CXX变量为空

        运行命令开始cmake。

        首先进入源码目录,mkdir build,创建build文件夹。

cmake -S llvm -B build -DCMAKE_BUILD_TYPE=Debug

        结果说找不到CXX环境变量,于是看了一下gcc版本,发现是7.3,这倒也没问题,但是没有g++,那么就安装一下吧。

        最后发现是这个名称了,以前应该就是g++

yum install gcc-c++

        安装完,查看版本也是7.3,然后设置一个临时的环境变量

        export CXX=/usr/bin/g++

        ok那继续。

(2)问题2:cmake版本低

        提示下面这样的问题,那就是版本低了。

CMake 3.20.0 or higher is required.  You are running version 3.16.5

        然后查看了一下yum源的版本,已经是最新的了,然后就想那就自己下载一个编译一下吧。

Download CMakeicon-default.png?t=N7T8https://cmake.org/download/#previous        到官网找了一个最新版本的tar.gz弄到本地,然后一路操作,发现版本更新了。

# 解压
tar -xvzf cmake-3.26.5.tar.gz# 进入文件夹
cd cmake-3.26.5# 给予完全权限,防止出现不可执行的情况
chmod 777 ./configure#然后运行
./configure# 成功会显示如下字样
//Cmake has bootstrapped.  Now run make.# 然后运行
make# 然后安装
sudo make install# 查看新版本
cmake --version

(3)问题3:GCC版本低

        刚才搞完cmake,然后重新在运行,发现说GCC版本低,源里面没有更新的版本了,我去他@##$&^&@#@。然后呢,想了想,这个各种版本低,一个一个编译啥时候是头。

        研究研究怎么修改源吧,被我在别人的博客里找到了。

        首先备份原来的源,在/etc/yum.repos.d/文件夹下面,手动或者自动备份一下就行

        然后下载新的源,说是麒麟是基于centos的,不过不是说8不继续支持了吗?

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

        清理缓存并重建

yum clean all && yum makecache

        查看可用的软件版本

yum list available | grep gcc

        发现一个源上gcc有8.5的,那么就更新一下吧

yum update gcc

        同意安装,相关的软件都更新了。

(4)暂时编译可以进行了

        然后清理一下运行cmake产生的问题,就是删除build里面的内容。

        然后继续下面的命令

cmake -S llvm -B build -DCMAKE_BUILD_TYPE=Debug

        一顿输出,然后没有说有啥错误,build下面该生成的也都生成了。

        然后运行下面的命令

cmake --build build

        然后开始等待,还没有完成,就暂时记录到这里,如果继续有问题,就接着这里记流水账。

3、相关参考

LLVM编译安装_llvm18 编译安装-CSDN博客

Getting Started with the LLVM System — LLVM 19.0.0git documentation

https://www.jianshu.com/p/598b7094b8c1

 配置centos8的源

https://www.cnblogs.com/zhang-xiao-shuang/p/18067889

安装docker

银河麒麟高级服务器操作系统V10下载安装及安装docker_银河麒麟v10镜像iso下载-CSDN博客

 编译gcc

https://www.cnblogs.com/tothk/p/16441498.html

这篇关于银河麒麟V10操作系统编译LLVM18踩坑记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/988549

相关文章

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

Zabbix在MySQL性能监控方面的运用及最佳实践记录

《Zabbix在MySQL性能监控方面的运用及最佳实践记录》Zabbix通过自定义脚本和内置模板监控MySQL核心指标(连接、查询、资源、复制),支持自动发现多实例及告警通知,结合可视化仪表盘,可有效... 目录一、核心监控指标及配置1. 关键监控指标示例2. 配置方法二、自动发现与多实例管理1. 实践步骤

java使用protobuf-maven-plugin的插件编译proto文件详解

《java使用protobuf-maven-plugin的插件编译proto文件详解》:本文主要介绍java使用protobuf-maven-plugin的插件编译proto文件,具有很好的参考价... 目录protobuf文件作为数据传输和存储的协议主要介绍在Java使用maven编译proto文件的插件

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

在Spring Boot中集成RabbitMQ的实战记录

《在SpringBoot中集成RabbitMQ的实战记录》本文介绍SpringBoot集成RabbitMQ的步骤,涵盖配置连接、消息发送与接收,并对比两种定义Exchange与队列的方式:手动声明(... 目录前言准备工作1. 安装 RabbitMQ2. 消息发送者(Producer)配置1. 创建 Spr

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

Python UV安装、升级、卸载详细步骤记录

《PythonUV安装、升级、卸载详细步骤记录》:本文主要介绍PythonUV安装、升级、卸载的详细步骤,uv是Astral推出的下一代Python包与项目管理器,主打单一可执行文件、极致性能... 目录安装检查升级设置自动补全卸载UV 命令总结 官方文档详见:https://docs.astral.sh/

统一返回JsonResult踩坑的记录

《统一返回JsonResult踩坑的记录》:本文主要介绍统一返回JsonResult踩坑的记录,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录统一返回jsonResult踩坑定义了一个统一返回类在使用时,JsonResult没有get/set方法时响应总结统一返回

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和