openSUSE变更默认编译器

news2024/11/15 21:02:51

Debian很稳定,但是必须要添加unstable源才能安装一些需要更新的软件,比如说稳定版的firefox是ESR版的,必须要从unstable源才能安装新版。但是unstable源是把所有的软件包都放在里面,操作过程中一旦不小心把核心组件更新到unstable版,那就会带来严重的问题。

Arch系很新,也就意味着稳定性差一些。

openSUSE Leap更加稳定,但是自带的软件包版本过低。不过有OBS(openSUSE build service)支持的第三方源,可以通过第三方源安装更新的版本。比如说Leap 15.6自带的firefox是ESR版的,但是可以通过第三方源安装最新版的从而让机器上有最新版本的firefox用,而第三方源的内容通常受到严格的限制,比如说firefox源就只有firefox相关内容,不会在更新的时候影响到系统的核心组件。这样就可以在稳定的系统上运行较新的软件。

因为最近需要使用高版本的gcc,所以使用了第三方源把Leap 15.6上的gcc-7.5更新到了gcc-13.3。实际上openSUSE的处理方法不是把旧的gcc删除,然后替换为新版的;而是在系统里安装了两个gcc,分别是7.5和13.3版。通过

gcc-7

可以使用7.5版本的gcc

通过

gcc-13

可以使用13.3版本的gcc

在使用zypper安装gcc的时候,系统会自动安装cpp、gcc、gcc-c++、gcc-fortran、gcc-info这么几个包

这几个包会在系统内添加/usr/bin/c++、/usr/bin/gcc、/usr/bin/g++、 /usr/bin/gfortran这么几个软连接指向默认的gcc编译器可执行文件,默认情况下就是7.5版。

openSUSE提供了alternatives系统,可以切换默认的一些程序,比如说ruby、Python的默认程序,这些都是openSUSE内置的alternatives。但是gcc不在默认清单里,而是需要手动添加。

Changing Default Compiler on OpenSuSE – Logikal Blog

通过以下命令可以添加gcc到alternatives

update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 50

--install是一般命令参数

接下来的/usr/bin/gcc是软链接,而系统默认的gcc就是这个/usr/bin/gcc

gcc是alternatives里面注册的可替换项的名字

/usr/bin/gcc-13是软链接实际指向的目标

50是优先级

这样就把从第三方源安装的gcc-13所对应的可执行文件/usr/bin/gcc-13注册到alternatives的gcc项中,优先级为50,而这个gcc项在实际的系统中指的是/usr/bin/gcc

执行后,会提示

using /usr/bin/gcc-13 to provide /usr/bin/gcc (gcc) in auto mode

然后

update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 20

这样就把系统默认的gcc-7.5所对应的可执行文件/usr/bin/gcc-7注册到alternatives的gcc项中,优先级为20

然后使用命令

update-alternatives --config gcc

按照提示选取,就可以改变/usr/bin/gcc这个软链接的指向,从而改变了系统默认的gcc

类似的可以把cpp、gfortran、g++都注册好

# 有时候探测系统默认c编译器的时候,不仅仅探测gcc,还会探测cc
update-alternatives --install /usr/bin/cc cc /usr/bin/gcc-13 50
update-alternatives --install /usr/bin/cc cc /usr/bin/gcc-7 20
update-alternatives --config cc
# 注册c pre processor
update-alternatives --install /usr/bin/cpp cpp /usr/bin/cpp-13 50
update-alternatives --install /usr/bin/cpp cpp /usr/bin/cpp-7 20
update-alternatives --config cpp
# 有时候探测系统默认c++编译器的时候,除了探测g++,还可能会探测c++
# 所以要注册两个
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-13 50
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 20
update-alternatives --config g++
update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++-13 50
update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++-7 20
update-alternatives --config c++
# 注册gfortran
update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran-13 50
update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran-7 20
update-alternatives --config gfortran

如果一个程序在编译过程中要用到多种编译器,比如gcc和g++,那么一定要调整为同一版本,不同版本的编译器编译出来的二进制文件在链接的时候可能会出问题。

通过update-alternatives调整了系统默认编译器后,对于大多数程序,在使用编译器时,如果需要调用配套的ar、ld程序时,一般会在编译脚本里通过编译器的输出信息来选择对应的程序

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用 RabbitMQ 和 Go 构建异步订单处理系统

使用 RabbitMQ 和 Go 构建异步订单处理系统 我们可以通过构建一个订单处理系统来演示如何使用消息队列(MQ)实现异步任务处理。这个项目将使用 RabbitMQ 作为消息队列,并使用 Go 语言来实现。以下是项目的详细教程和相关环境配置。 项目描述…

uniapp+vue3实现双通道透明MP4播放支持小程序和h5

双通道透明MP4视频播放的截图 以下是合成后结果,二个合并在一起进行播放 下载资源,打开运行直接使用看到效果 https://download.csdn.net/download/qq_40039641/89715780

[iBOT] Image BERT Pre-Training with Online Tokenizer

1、目的 探索visual tokenizer编码下的MIM(Masked Image Modeling) 2、方法 iBOT(image BERT pre-training with Online Tokenizer) 1)knowledge distillation(KD) distill knowledge from the…

六、桥接模式

桥接模式(Bridge Pattern)是一种结构型设计模式,旨在将抽象与实现分离,使得两者可以独立变化。通过使用桥接模式,可以避免在多个维度上进行继承,降低代码的复杂度,从而提高系统的可扩展性。 组成…

c# Csv文件读写示例,如果文件存在追加写入

功能 1.写入 2.读取 导出文件效果 调用示例 注意示例中的ToDataTable()方法是自己的封装的扩展方法&#xff0c;源码在集合扩展方法-CSDN博客 private List<MarkDataModel> createMarkDataList(int count){var markDataModels new List<MarkDataModel>();for (…

WSA事件模型

服务端骨架&#xff1a; #include <iostream> #include <WinSock2.h> #pragma comment(lib,"ws2_32.lib") #include <windows.h>int main() {WSADATA lpWSAData;WSAStartup(MAKEWORD(2, 2), &lpWSAData);SOCKADDR_IN saddr{ 0 };saddr.sin_add…

【生日视频制作】海上绿色摩托艇汽车艇车身AE模板修改文字软件生成器教程特效素材【AE模板】

生日视频制作教程海上绿色摩托艇汽车艇车身AE模板修改文字特效广软件告生成神器素材祝福玩法AE模板替换工程 怎么如何做的【生日视频制作】海上绿色摩托艇汽车艇车身AE模板修改文字软件生成器教程特效素材【AE模板】 生日视频制作步骤&#xff1a; 安装AE软件 下载AE模板 把AE模…

单点登录问题【拼多多0905一面】

说一些今晚情况&#xff0c;7点腾讯音乐笔试&#xff0c;因为8点拼多多一面&#xff0c;哪个都拒不了。硬着头皮50分钟写了1.2题然后去面试。刚开始状态真的很差&#xff0c;大脑思考不动&#xff0c;面试中2个手撕&#xff0c;做出来一个&#xff0c;两个项目问题&#xff0c;…

用Java实现一个简易的炸金花小游戏

最近闲暇时间写了个用Java实现的简易版的炸金花小游戏&#xff0c;还是很有趣的&#xff0c;下面具体来介绍下具体实现。 下面这个是初始化页面。 一、设计思路 1、首先要了解炸金花的游戏规则&#xff0c;针对整个游戏过程来考虑。从游戏开始后的抽牌选出庄家&#xff0c;再到…

shell 中的grep sed awk命令

目录 一、grep命令 1.基本格式 2.常用命令 3. sort 命令 3.1 格式 3.2 常用选项 4. uniq 快捷去重 4.1 格式 5. tr 命令 5.1 格式 5.2 常用选项 练习&#xff1a; 二、sed 命令 1. sed基本概念 2. 基本操作格式 3. 常用选项 4. 应用 5. 文本模式过滤行内容 6. s…

C#自定义控件的放置与拖动

1、自定义控件 using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Drawing.Drawing2D; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;namespace PartA…

【mysql】mysql修改sql_mode之后无法启动

现象&#xff1a;修改后mysql无法启动&#xff0c;不报错 原因&#xff1a;MySQL在8以后sql_mode已经取消了NO_AUTO_CREATE_USER这个关键字。去掉这个关键字后&#xff0c;启动就可以了 修改前&#xff1a; sql_modeSTRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR…

jenkins 工具使用

使用方式 替代手动&#xff0c;自动化拉取、集成、构建、测试&#xff1b;是CI/CD持续集成、持续部署主流开发模式中重要的环节&#xff1b;必须组件 jenkins-gitlab&#xff0c;代码公共仓库服务器&#xff08;至少6G内存&#xff09;&#xff1b;jenkins-server&#xff0c;…

查看当前主机的硬盘是固态硬盘还是机械硬盘

windows主机下查看硬盘类型方法&#xff1a; 打开dos界面&#xff0c;输入 powershell进入powershell界面 在PowerShell窗口中&#xff0c;输入 Get-PhysicalDisk 命令并按回车。 发现MediaType下面的值为HDD,即为机械硬盘&#xff0c;如果是固态硬盘&#xff0c;则为SSD

什么是CDN及其如何影响SEO?

有没有想过&#xff0c;为什么你的网站在谷歌搜索结果的后几页徘徊&#xff0c;即使你已经优化了每一个网页&#xff1f; 有时候&#xff0c; 慢速的网站性能可能是罪魁祸首。 如果这个问题引起了你的共鸣&#xff0c;那么你可能想要探索一下内容分发网络&#xff08;Content…

Android平台通过RTSP服务实现摄像头麦克风共享

技术背景 前些年&#xff0c;我们在完成Android平台RTMP直播推送模块后&#xff0c;遇到这样的技术需求&#xff0c;好多开发者希望在Android平台&#xff0c;实现摄像头和麦克风音视频数据采集编码打包后&#xff0c;对外提供RTSP&#xff08;Real Time Streaming Protocol&a…

【DEV工具-IDEA】新建springboot项目,无法选择java8?

问题&#xff1a;新建springboot项目&#xff0c;无法选择java8。 #解决&#xff1a; 替换为 &#xff1a;https://start.aliyun.com

基于蜣螂优化最小二乘支持向量机的数据分类预测Matlab程序DBO-LSSVM 多特征输入多类别输出 含基础程序

基于蜣螂优化最小二乘支持向量机的数据分类预测Matlab程序DBO-LSSVM 多特征输入多类别输出 含基础程序 文章目录 一、基本原理DBO&#xff08;Dung Beetle Optimization&#xff09;算法原理LSSVM&#xff08;Least Squares Support Vector Machine&#xff09;模型原理DBO-LSS…

【C#跨平台开发详解】C#跨平台开发技术之.NET Core基础学习及快速入门

1. C#与.NET的发展历程 C#是由Microsoft开发的现代编程语言&#xff0c;最初伴随着.NET Framework发布。随着技术的进步&#xff0c;特别是针对跨平台开发的需求&#xff0c;Microsoft推出了.NET Core&#xff0c;这是一个开源且跨平台的框架&#xff0c;支持Windows、macOS和…

微信小程序手写签名

微信小程序手写签名组件 该组件基于signature_pad封装&#xff0c;signature_pad本身是web端的插件&#xff0c;此处将插件代码修改为小程序端可用。 signature_pad.js /*!* Signature Pad v5.0.3 | https://github.com/szimek/signature_pad* (c) 2024 Szymon Nowak | Releas…