Linux相关概念和易错知识点(3)(yum、gcc、动静态库)

yum命令轻松升级到高版本gcc gcc 安装; devtoolset 阅读详情

目录

1.yum

(1)yum是什么?有何背景?

(2)yum在哪去下载我们要安装的软件?

(3)yum常见指令

①安装、搜索、卸载

②元数据缓存

③软件包缓存

④升级yum -y update 升级所有.rpm包同时,也升级软件和系统内核,但不会删除旧版本软件包yum -y upgrade 只升级所有.rpm包,不升级软件和系统内核,软件和内核保持原样,会删除原来的软件包

2.gcc、g++

(1)生成可执行程序

(2)预处理、编译、汇编、链接

3.动静态库

(1)动静态链接

(2)动态库

(3)静态库

(4)查询链接方式


1.yum

(1)yum是什么?有何背景?

Linux是一个开源系统,人们可以在此基础上进行一些开发。有人开发一个项目,希望给更多人使用,于是将它编译成一个软件包(不乏一些有趣的小软件),将这个软件包放到服务器上,我们可以直接去这个服务器上下载到自己的Linux里。yum就是Linux里面的应用商店。apt也是这种包管理器。

Linux中软件的常见安装方式:yum/apt(编译好的,直接安装),.rpm(下载安装包),源码安装(针对一些开源项目软件,将源码移植到自己的设备,自己编译成可执行程序)

这个存放数据包的云服务器在哪?像CentOS这种大公司就会搭建自己的官网和服务器,有人专门管理和维护。那钱从哪来呢?事实上,开源是一种商业模式。其它公司可以通过CentOS进行开发,与此同时使用该系统的公司会有各种援助、捐赠或者订阅,以获得企业级的技术支持和安全维护,而这笔钱又会用于CentOS和服务器等的维护。因为你在别人的基础上开发,它倒闭了你也受损。对于普通用户而言,这就是免费的,我们可以做出自己的软件上传到别人的服务器上而不需要花钱,别人用也不需要花钱。如此一来Linux社区活跃度提高,论坛数量增加,也会有越来越多的企业和优秀开发者看到这个系统。

并且像CentOS官方有详细文档说明,有自己的用户画像(用户是学生为主还是企业为主?CentOS企业居多,Ubantu学生居多,这也决定论坛里面讨论的主题),这些东西构成了操作系统的生态,yum就是操作系统生态的体现,它背后是无数开发者向往开源精神的结晶,这一切也与商业并行,如此才能稳定。

我们不仅仅要看到yum的来源,还要看到Linux操作系统本身,OS背后的生态,作为一个优秀的操作系统应该拥有的论坛、软件体系,像安卓开源也是这样,建立了很强大的生态优势。这也导致在开源软件面前很难实现后来居上,因为生态需要历史的积淀。

(2)yum在哪去下载我们要安装的软件?

yum(包管理器)是一个应用商店,这个应用商店肯定是要访问服务器的,软件也是在服务器上下载下来的。yum的下载链接在哪?Linux内部有配置文件(yum源,位于/etc/yum.repo),里面有大量链接,会自动根据软件名定位服务器,这些配置文件在我们安装Linux时就有了,只不过不同地方的Linux安装包默认的配置文件可能不同,有可能导向国外的服务器了。国内也有相应的云服务器,我们也可以自己换成国内的镜像网址(下载yum源后mv掉原来的,清理原来的配置文件,最后配置新的yum),了解流程即可。

(3)yum常见指令

①安装、搜索、卸载

yum -y install (name) 安装软件包,-y表示不经过确认直接下载。安装yum都是root安装,有的必要的安装目录只有root能访问
yum search (name) 搜索包含指定关键字的软件包,不一定每个字都相同才匹配

yum -y remove (name) 卸载指定的软件包,-y表示不经过确认直接卸载

yum list | grep (name) 可以查软件,先用list列出来的内容通过管道交给grep,grep将描述信息含有(name)的筛选出来

②元数据缓存

yum list 可以列出所有可安装的软件包,包括版本号等详细信息。

但yum源配置文件并不包含版本号等信息,第一次使用时会根据里面的URL到网站里获取信息版本号等信息,所以我们会发现第一次使用会等几秒,但是第二次使用就没这个问题了,因为这些软件信息会缓存到本地,这些软件的信息就叫元数据缓存。注意缓存的是信息而不是软件本身,元数据缓存只会让yum search (name)和yum list 更快相应。

在了解元数据缓存之后,我们自然希望能够管理它。由于yum list优先到本地找缓存信息,这就会导致长时间后本地缓存的数据不是最新的,我们需要通过yum makecache更新或者下载信息到本地的缓存。或者我们可以删除本地的元数据缓存,使用yum clean metadata。注意这个删除操作只会删除元数据缓存,已下载和已安装的软件不会受到任何影响。

③软件包缓存

当我们使用yum -y install (name) 安装软件包时,会保留一份安装包.rpm到系统指定位置,当第二次安装或者更新时就能更快,本质上也是和元数据缓存那样为了效率而出现的产物。当我们使用yum -y remove (name) 时会删除软件包,但不会删除下载到本地缓存中的安装包文件,第二次安装时就更快了。注意软件包.rpm和软件包缓存是不同概念,软件包是可执行程序,而缓存只是个备份,用来加速安装的。

我们可以使用yum clean packages来清理软件包缓存,也可以使用yumdownloader (name)来下载但不安装软件,注意主动下载的软件不在软件包缓存内,因为yumdownloader下载到指定或当前工作目录,而不是识别为缓存的目录下。

我们可以使用yum clean all来清理所有缓存信息。

④升级
yum -y update 升级所有.rpm包同时,也升级软件和系统内核,但不会删除旧版本软件包
yum -y upgrade 只升级所有.rpm包,不升级软件和系统内核,软件和内核保持原样,会删除原来的软件包

2.gcc、g++

(1)生成可执行程序

C和C++运行程序需要将.c或.cpp处理成可执行文件,gcc是C语言的编译器,g++是C++的编译器

使用gcc -o (dst) (src) 命令在什么选项都没加的情况下直接生成可执行程序,-o是生成对应目标文件的意思

值得注意的是Linux中可执行程序不需要加后缀,因为生成的是可执行文件,用户也有可执行权限,所以能够直接运行。而在Windows中,后缀标志着文件默认的打开方式,因此要有.exe才能识别为可执行程序,而在Linux中识别是在权限那一步进行的,后缀只能算作区分文件使用。

(2)预处理、编译、汇编、链接

C/C++生成可执行程序分为预处理、编译、汇编、链接四步,在Linux里对应下来的四步分别为

①gcc -E test.c -o test.i 预处理(宏替换),-E的意思是开始进行程序的处理,预处理完就停下来(预处理是清除或展开宏替换、头文件、注释等,处理完后还是C语言代码)。-o是形成目标文件的意思,后面跟目标文件名,当然也可以不写,默认生成的是文件名和源文件相同,后缀为.i的文件(后续所有操作也都可以默认生成文件名)

②gcc -S test.i -o test.s 编译(C语言代码生成汇编代码),-S开始进行程序的处理(可以从.c开始,也可以从.i开始,-S不会挑源文件,它只会管理目标文件的生成),编译完就停下来

③gcc -c test.c -o test.o 汇编(由汇编代码生成机器可识别的二进制代码),-c意味着汇编完成就停下来(源文件不限)。.o文件是可重定位的二进制目标文件,虽然是二进制文件,但执行不了,执行一个可执行文件需要和系统的标准库进行定位,因此它并不是可执行文件。

④gcc -o test test.o 链接(生成可执行文件或库文件),.o文件和标准库进行关联,构建可执行程序,我们可以使用./(dst)来运行程序

3.动静态库

(1)动静态链接

我们写代码时都会使用头文件,调用的头文件在include这个目录里面,里面包括stdio.h等所有可使用<>包含的头文件,stdio.h里面并不存在函数的实现,但是却有很多声明,包括我们使用的函数printf、scanf等,具体函数实现又是在另外的函数库文件里面的。

当生成可执行程序时,预处理阶段我们包含的头文件声明会被展开,但是就像我前面说的那样,里面没有函数实现而只有声明,在链接时会定位到对应的库函数文件,找到函数。这个时候就有处理上的不同了,一种是将函数的实现拷贝进我们即将生成的可执行程序(静态链接),另一种是拿到这个函数实现的指针,在执行程序时来调用(动态链接)。

我们可以使用-static来告诉编译器我们使用静态链接,如gcc -o test test.c -static,注意静态链接的选项要在链接阶段加才有意义

(2)动态库

动静态库是指库函数文件,就上面所指的库函数具体实现的文件。其中一种叫做动态库,当使用动态链接时会匹配动态库.so(.so后面可能还跟版本号,如.so.60,在Windows中动态库后缀一般是.dll),这个时候生成的可执行程序在调用库函数时就会到对应文件中找。注意只要没有指定静态链接,都只会进行动态链接

优点:拷贝函数地址节省资源,可执行程序体积比较小,执行程序时内存中存储一份库文件代码

缺点:如果动态库受损,程序根本无法执行,可执行程序对动态库依赖很高

我们接触到的命令很多都是用C语言写的并使用动态链接(usr/bin目录下)

(3)静态库

当我们指定选项使用静态链接时,就会匹配静态库.a(注意Linux里默认没有安装静态库,指定选项后如果找不到静态库就报错)

优点:把静态库里面要调用的函数具体内容也拷贝过来了,可执行程序里面就有实现,不需要其它库文件就能运行

缺点:比较浪费,可执行程序体积大大增加且代码重复,执行程序时内存中存储多分相同文件代码

(4)查询链接方式

file (name) 查询文件类型,会根据文件里面的具体内容识别为文本、可执行程序等,识别为可执行文件时还能看到链接方式(dynamically linked动态链接,statically linked静态链接)。file还可以识别目录,如果识别成目录会告诉我们

ldd (name) 查询可执行文件动态链接的文件,注意ldd的对象不能是目录或普通文件,也不能是静态可执行文件,它面向的对象仅仅是动态链接的可执行文件

stat (name) 可查询任何文件和目录的属性信息(修改时间、大小、inode等)
 

CentOS7安装指定版本gcc 一、使用yum安装默认gcc 因为编译安装gcc,是需要用gcc编译的,所以首先需要安装默认gcc yum install gcc yum install gcc-c++ 如果没有yum源,可以先配置阿里源 cd /etc/yum.repo.d/ mv CentOS-Base.repo CentOS-Base.repo.bak wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo # 重新加载yum源 yum clean 阅读详情

相关推荐

【Linux】Linux工具篇(yum、vim、gcc/g++、gdb、Makefile、git)

Linux环境基础开发工具yum、vim、gcc/g++、gdb、Makefile、git的介绍和使用

不 良的博客 2426

yum安装gcc

  如果服务器是自己的,并且机器就在身边,那什么都不用说了,缺少gcc顶多就是重新放入安装盘,把开发工具包安装上。但是如果是租的服务器,托管服务 方那帮人又搞不懂你说的啥子gcc,要安装gcc实在是太麻烦了。你得去找gcc相关的包,版本号还得必须对应上,否则不兼容。最近给一个朋友装gcc, 着实头疼了一把。后来发现yum这个好东西,只需要执行一个命令,所有的烦恼都解除了。       朋友的系统...

weixin_33929309的博客 1041

yum安装gcc,gdb,gcc及vim配置

安装首先需要查看自己的系统有没有安装以上软件,使用which命令; 可以看到我的系统安装了以上软件,那么如何安装呢: 首先了解yum: Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所

mxrrr_sunshine的博客 2526

[Linux打怪升级之路]-yun安装和gcc的使用

本期学习目标:学习yum的基础操作,用gcc编写在vim中写好的代码,学会如何编写makefile文件,用make指令编程。

分享技术 8145

基于BS21的星闪模块设计电路SLE/BLE

基于BS21的星闪模块设计电路SLE/BLE HI2821

2503_91889531的博客 2739

kubedns-coredns部署pod出现not ready问题

文章目录遇到的问题1、发现问题2、排查问题3、解决方法 coredns的实例health_check不通过的问题,排查和解决方法 遇到的问题 1、发现问题 pod启动但是未ready 查看是readiness失败 使用对应的URL进行curl,发现真的返回503 2、排查问题 查看错误日志,发现一堆这个错误"waiting on : kubernetes" 网上相关的问题解答 这个跟测试场景不一样,这个案例是开了防火墙,可以确认我这个案例的机器没有开防火墙,但它提醒了一点,coredns是需要访问ap

u012533481的博客 2844

centos7使用yum安装gcc8

yum升级gcc工具链

nangonghen的博客 5922

〔重庆理工大学〕计算机网络实验指导书【实验九 直连路由,静态路由,默认路由配置】

本实验指导书介绍了直连路由、静态路由和默认路由的配置方法。主要内容包括:1)路由器基础知识,包括直连路由、静态路由和动态路由三种路由生成方式;2)路由度量值与匹配顺序,解释了不同路由类型的优先级;3)实验任务分为三个部分:直连路由的查看分析、静态路由的配置以及默认路由的配置,详细说明了配置步骤和命令。实验要求通过模拟器搭建网络环境,完成路由配置使PC间能够互通。实验旨在帮助学生掌握不同路由类型的工作原理和配置方法,适用于简单的网络环境。

Pretty Boy Fox的博客 1056

Linux中的yum和gcc/g++

在Linux中,我们也要进行工具/指令/程序、安装、检查、卸载等等,需要使用到yum。

可涵的博客 2019

SST专题(2-2)MMC-SST 输入级的工作原理及数学模型

本文研究了MMC-SST和iMMC-SST的电路结构及工作原理。系统由前级MMC电路和后级DC/DC电路组成,MMC负责电能转换和能量存储,DC/DC电路进行电压电流调节。重点分析了半桥型子模块(SM)的开关组态和工作原理,建立了平均值模型,推导了上下桥臂电压方程和环流特性。研究表明,通过合理控制子模块充放电模态可维持端口电压平衡,上下桥臂电压调控可影响网侧功率吸收,而环流特性对中压直流侧电压具有重要影响。

嵌入式老牛的博客 773

Claude Code、Codex、Gemini CLI、OpenCode 和 OpenClaw 配置管理太麻烦?试试这个统一管理工具

还在为 Claude Code、Codex、Gemini CLI 等 AI CLI 配置烦恼?🤯 这款桌面工具支持五大助手统一管理,一键切换 50+ 服务商,MCP 和 Skills 集中管理 🛠️,跨平台支持,让你的 AI 编程更高效 ⚡

XiaoqiangClub的博客 913

深度解析Linux中的编译器gcc/g++

gcc只用来编译C语言g++用来编译C/C++程序的翻译步骤经历四个过程的1、预处理(进行宏替换/去注释/条件编译/头文件展开等)这个-E的意思是从现在开始,进行程序的翻译,一但预处理做完了,就停下来那么这里的code.i保存的是预处理之后的结果我们这里的-o选项就是指明了我们的生成文件的名称了那么我们将这个code.i文件和原始的code.c进行对比下对比发现我们的源文件有24行,预处理结算的代码有800多行我们在这个阶段进行了进行宏替换/去注释/条件编译/头文件展开等等操作。

2301_80863610的博客 2792

bevformer详解(3): 逐行代码讲解

在这篇文章中,我们将从BEVFormer算法代码入手,深入探究BEV转换的流程。BEVFormer是一种基于Transformer的BEV转换模型,其核心思想是利用自注意力机制和交叉注意力机制,从,并通过Object Query与BEV特征的交互,完成3D目标检测和地图分割等任务。https://developer.baidu.com/article/details/3224715bevformer的网络结构由三部分组成, 模型结构所示,其中的是部分,对于的是的结构,对于部分,沿用的中的decoder部分,

@bangbang的博客 3700

【Linux】Linux编译器-g++、gcc、动静态库

预处理功能主要包括宏定义、文件包含、条件编译、去注释等。 预处理指令是以#号开头的代码行。 gcc –E hello.c –o hello.i 选项“-E”,该选项的作用是让 gcc 在预处理结束后停止编译过程。 选项“-o”是指目标文件,“.i”文件为已经过预处理的C原始程序。

Become Mad的博客 1739

电源完整性分析:PDN阻抗与去耦电容设计——目标阻抗计算与电容选型深度实战

摘要:随着嵌入式处理器主频突破 GHz、多核架构普及,电源完整性(Power Integrity, PI)已成为高速 PCB 设计中不可忽视的关键环节。本文从 PDN(电源分配网络)阻抗模型出发,系统讲解目标阻抗计算方法、去耦电容选型策略、反谐振抑制技术,并结合 STM32F4 核心板的完整设计实例,提供一套可落地的电源完整性工程实践方案。电源完整性设计是一项系统工程,需要从目标阻抗计算电容选型反谐振抑制PCB 布局目标阻抗是设计的起点,由电源电压、纹波要求和瞬态电流决定去耦电容。

从事移动开发八年,csdn博客专家,阿里云特邀专家,华为云云享专家,高级网络信息安全工程师,大数据工程师(高级),python技术开发(高级),HarmonyOS 应用开发者高级认证,现在某学校任教。 1万+

振动分析-46-设备振动监测和故障诊断能力提升需要理解和掌握的知识体系

提升振动分析能力对于确保机械设备的高效运行和预防故障至关重要。

qq_20466211的博客 664

【Linux】--- 基础开发工具之yum/apt、vim、gcc/g++的使用

当用户想下载软件或工具时,都需要到特定位置进行下载,比如你在手机上下载app,需要到对应的应用商城下载。类似的,在Linux系统下也有下载的需求,通常来说下载方式主要有以下几种:1.源代码安装:下载程序的源码,进行编译得到可执行程序之后使用,非常不方便。2.rpm包安装:将源码提前在各种不同环境下编译好,形成一种压缩包叫rpm包,直接下载可执行程序就能安装好,实际上就是把可执行程序拷贝到指定路径下。但是主要可能会存在软件之间依赖问题,比如还需要你安装其他软件,额外的库之类的。3.yum/apt安装。

2301_79448270的博客 2057

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【Linux】yum、vim、gcc使用(超详细)

Linux中常见的软件安装方式 --------- 下载&&安装a、yum/aptb、rpm安装包安装c、源码安装。因为我们的vim操作界面过于简单,编写程序时没有基本的首行缩进,自动补齐等Windows编译器都有的功能,使用起来及其不方便; 可以在家目录下面的.vimrc文件中配置

weixin_74116463的博客 1556

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain&#39;s apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath(&#39;DeepLearnToolbox&#39;));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand(&#39;state&#39;,0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = &#39;sigm&#39;;%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, &#39;Too big error&#39;);```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, &#39;Too big error&#39;);```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

【Linux】yum、vim、gcc/g++

1.在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序.2.但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装.3.软件包和软件包管理器, 就好比 “App” 和 “应用商店” 这样的关系.

Lehjy的博客 1147

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Linux系统vim,gcc,g++工具使用及环境配置,动静态库的概念及使用

vim编辑器的使用方法及其环境配置,gcc/g++编译器的使用,程序的执行过程,动静态库的概念及静态库的安装方法。

qq_74276498的博客 1709

yum如何安装特定版本的gcc_Linux用yum命令安装gcc

1、查看下CentOS系统有没有安装GCC与G++$ gcc -v或 $ rpm -q gcc或 $ yum info gcc三者择其一即可,有最好,没有就需要重新安装,此处安装取yum命令,只因rpm无法解决软件包的依赖关系,而yum会自动查找软件的相关依赖包,自动下载安装2、执行命令(预防万一用root用户执行)$ yum-yinstallgcc若提示需要root权限代表...

weixin_39959192的博客 3534

yum如何安装特定版本的gcc_yum安装gcc

最近用vmware刚刚重装了一个linux虚拟机,装完之后才发现里面竟然没装gcc,带着郁闷的心情查了很多资料。很多人都说自己安装的话很难,如果用yum这个工具就好一点,后来就真的查到了这么一篇文章是关于用yum安装gcc的,先说下我虚拟机的简单配置Red Hat Enterprise Linux 5内核:2.6.18-128.el5以下文章是我主要参考的内容该文章出处:http://space....

weixin_36424234的博客 4099

linux中使用yum安装gcc

阿鲤在学习Linux时遇到了一个 问题,那就是Linux上没有安装gcc, 而在linux上,gcc是一个很重要的c编译器。因为linux的源码包必须通过编译才能使用。如果没有gcc的话,就很难办咯。 所以阿鲤在这向大家分享以下自己安装gcc的过程 在这之前,需要先做好以下工作 1:确保网络连接正常; 2:做好root权限(如果没有root,输入su ,回车,密码即可);、 下来正式介绍安装gcc...

belongHWL的博客 2369

在linux中GCC、Yum 与 Apt - get 的区别

GCC(GNU Compiler Collection)即 GNU 编译器套件,它本质上是一个编译器。最初,GCC 主要是作为 C 语言的编译器,随着不断发展,它已经支持多种编程语言,如 C++、Objective - C、Fortran、Java、Go 等。GCC 的主要任务是将高级语言编写的源代码转换为机器可执行的目标代码。Yum(Yellowdog Updater, Modified)是一种在基于 RPM 包管理的 Linux 发行版(如 CentOS、RHEL 等)上使用的软件包管理器。

m0_67544876的博客 946

linux下使用YUM安装GCC、gcc-c++

在安装服务器的时候图kuaijie

飞翔吧胖子的专栏 2万+

Linux---(五)三大工具yum、vim、gcc/g++

类似于手机上的软件商店或者应用管家。🎗️应用商店中的特定的App没有被我安装的时候,在哪里?在服务器端。🎗️安装软件的本质是下载和安装🎗️应用商店实质是一种客户端软件🎗️🎗️评判一款操作系统好或不好的标准:每一款操作系统都匹配上它的社区、官方文档、配套软件,叫做对应的生态。

qq_66238381的博客 8717
上一篇: Linux相关概念和易错知识点(2)(用户、文件和目录、inode、权限)
下一篇: Linux相关概念和易错知识点(4)(自举、vim)
-SGlow-
博客等级 码龄3年 1513粉丝 118原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值