初阶linux2( Linux 环境基础开发工具使用指南)

Linux【环境基础开发工具使用】 yum、make、makefile+ 阅读详情

📚 目录(俏皮版)
🍳 一、软件管家 yum —— 做饭先备料
查看菜谱(软件包)
点菜安装
撤菜卸载
文件搬运工 rzsz
✍️ 二、编辑器 vim —— 键盘上的指尖芭蕾
三种核心模式
基本操作:进、写、退
正常模式常用指令(附例子)
末行模式常用指令
简单配置你的 vim
🔧 三、编译器 gcc/g++ —— 翻译官的故事
编译四部曲
函数库的悄悄话:静态 vs 动态
常用 gcc 选项
🐛 四、调试器 gdb —— 捉虫小能手
开始调试前的重要一步
gdb 常用命令(含例子)
🏗️ 五、自动化构建 make/Makefile —— 懒人必备神器
Makefile 的核心三要素
一个完整的例子
make 的工作原理
📊 六、第一个小程序:进度条 —— 动态视觉初体验
前置知识:\r 与 \n 的爱恨情仇
行缓冲区实验
进度条完整代码与解释
🌐 七、版本控制 git —— 代码的云端储存柜
安装与配置
三板斧实战(含免密配置)

🍳 一、软件管家 yum —— 做饭先备料
在 Linux 下装软件,传统方法是下载源码手动编译 —— 就像从种麦子开始做面包,太麻烦。yum 就是“应用商店”,帮你自动下载、安装、卸载软件包。

查看菜谱(软件包)

yum list | grep 关键词

例子:查找用于 Windows 和 Linux 之间传文件的 lrzsz 包

yum list | grep lrzsz

作用:列出所有名称包含 lrzsz 的可用软件包,并显示版本、架构等信息。

点菜安装

bash
sudo yum install 软件包名

例子:安装 lrzsz

bash
sudo yum install lrzsz

作用:自动下载并安装该软件。sudo 是因为需要写入系统目录。

撤菜卸载

sudo yum remove 软件包名

例子:卸载 lrzsz

sudo yum remove lrzsz

作用:彻底删除软件及其配置文件。

文件搬运工 rzsz
安装 lrzsz 后,在 XShell 等终端中可以直接拖拽文件上传(rz 命令)或下载到 Windows(sz 文件名)。

💡 提示:所有 yum 操作必须联网!可以用 ping www.baidu.com 测试网络。

✍️ 二、编辑器 vim —— 键盘上的指尖芭蕾
Vim 是 Linux 自带的“神级编辑器”,没有鼠标,全靠键盘命令。初学可能觉得难,但熟练后效率飞升。
在这里插入图片描述

基本操作:进、写、退
1.打开/新建文件:vim test.c
2.按 i 进入插入模式,输入代码
3.按 Esc 回到正常模式
4.输入 :wq 保存并退出

正常模式常用指令
在这里插入图片描述
末行模式常用指令
在这里插入图片描述

简单配置vim
在家目录创建 .vimrc 文件,写入:

syntax on          " 语法高亮
set nu             " 显示行号
set shiftwidth=4   " 缩进4空格

重启vim后效果立马显现

🔧 三、编译器 gcc/g++ —— 翻译官的故事
C/C++ 代码是人能读的“外语”,gcc 负责把它翻译成机器能执行的 0/1 指令。整个过程分为四步:
在这里插入图片描述

完整例子(以 hello.c 为例):

# 1. 预处理
gcc -E hello.c -o hello.i
# 2. 编译
gcc -S hello.i -o hello.s
# 3. 汇编
gcc -c hello.s -o hello.o
# 4. 链接
gcc hello.o -o hello
./hello          # 运行

一步到位:gcc hello.c -o hello 直接生成可执行文件。

函数库的悄悄话:静态 vs 动态

  • 动态库(.so):编译时只记录“指针”,运行时再加载。省空间,默认使用。
    查看动态链接:file hello 会显示 dynamically linked。

  • 静态库(.a):把库代码直接复制进可执行文件。体积大,但可独立运行。
    使用静态链接:gcc -static hello.c -o hello_static

在这里插入图片描述
🐛 四、调试器 gdb —— 捉虫小能手
程序出错了?gdb 让你一步步观察程序的“内心活动”,找到 bug 藏身之处。

开始调试前的重要一步
gcc 默认生成的是 release 版(无法调试)。必须加上 -g 选项:

gcc -g myprog.c -o myprog

gdb 常用命令(含例子)
启动调试:gdb myprog
在这里插入图片描述
调试小实战:假设程序第 20 行有 bug,我们想看看变量 sum 的变化

gdb myprog
(gdb) b 20          # 在第20行打断点
(gdb) r             # 运行
(gdb) p sum         # 打印当前 sum
(gdb) n             # 执行下一行
(gdb) p sum         # 再打印,对比变化

🏗️ 五、自动化构建 make/Makefile —— 懒人必备神器
当项目有十几个 .c 文件时,手动输入 gcc 命令会让人崩溃。Makefile 就像一个菜谱,告诉 make 命令如何一步步编译。

Makefile 的核心三要素
**1.目标:**想生成的文件(如 hello)

**2.依赖:**生成目标需要的原材料(如 hello.o)

**3.命令:**如何从依赖生成目标(如 gcc hello.o -o hello)

一个完整的例子

假设我们有一个 hello.c:

#include <stdio.h>
int main()
 {
  printf("Hello Makefile!\n"); 
  return 0;
 }

创建 Makefile 文件(注意 Tab 缩进,不能用空格):

hello: hello.o
	gcc hello.o -o hello

hello.o: hello.s
	gcc -c hello.s -o hello.o

hello.s: hello.i
	gcc -S hello.i -o hello.s

hello.i: hello.c
	gcc -E hello.c -o hello.i

.PHONY: clean
clean:
	rm -f hello.i hello.s hello.o hello

执行

make        # 自动编译生成 hello
./hello     # 运行
make clean  # 删除所有临时文件

make 的工作原理
1.找当前目录下的 Makefile 或 makefile

2.执行第一个目标(这里是 hello)

3.如果目标文件不存在,或其依赖比它更新,就执行对应命令

4.依赖又可以触发下层目标,形成一个链式反应
注意:💡 .PHONY 声明 clean 是伪目标,总是执行其命令(避免和同名文件冲突)。

📊 六、第一个小程序:进度条 —— 动态视觉初体验

写一个动态刷新的进度条,能帮你深刻理解 \r(回车)、\n(换行) 以及行缓冲区的概念。

前置知识:\r 与 \n 的爱恨情仇
\n:换行(Newline),将光标移到下一行相同位置(在 Linux 中也会隐含回到行首,但标准 C 中需要区分)

\r:回车(Carriage Return),将光标移到当前行行首

在老式打字机上,\r\n 才是真正的“换到新行行首”。Linux 下通常只用 \n,但进度条需要原地刷新,所以要用 \r。

#include <stdio.h>
#include <unistd.h>
int main() {
    printf("Hello");   // 没有 \n
    sleep(3);          // 等待3秒
    return 0;
}

现象:先等待3秒,然后才一起打印 Hello。
原因:printf 默认是行缓冲,遇到 \n 或程序结束才刷新。加上 fflush(stdout) 可以立即输出。

进度条完整代码与解释

#include <stdio.h>
#include <unistd.h>
#include <string.h>

int main() {
    int i = 0;
    char bar[102];
    memset(bar, 0, sizeof(bar));          // 清空数组
    const char* label = "|/-\\";          // 旋转光标的四种形态(注意转义反斜杠)

    while (i <= 100) {
        printf("[%-100s][%d%%][%c]\r", bar, i, label[i % 4]);
        fflush(stdout);                   // 立即刷新,不用等 \n
        bar[i++] = '#';                   // 填充一个 #
        usleep(100000);                   // 休眠 0.1 秒,模拟进度
    }
    printf("\n");                         // 最后换行
    return 0;
}

编译运行

gcc progress.c -o progress
./progress

现象:会看到一个动态刷新的进度条,并且一个小光标在转圈

🌐 七、版本控制 git —— 代码的云端储存柜
Git 是代码的时光机,可以随时回到任意历史版本,还能把代码托管到 GitHub 上。

sudo yum install git
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"

三板斧实战

1. 克隆项目到本地
先在 GitHub 上新建仓库,复制 HTTPS 或 SSH 地址。

git clone https://github.com/你的用户名/仓库名.git
cd 仓库名
  1. 第一板斧:git add —— 告诉 git 要跟踪哪些文件
echo "# My Project" >> README.md   # 新建一个文件
git add README.md                  # 添加单个文件
git add .                          # 添加当前目录所有改动

3.第二板斧:git commit —— 在本地拍个快照

git commit -m "添加 README 文件"

-m 后面是本次修改的说明(强烈建议写清楚改了什么)。

  1. 第三板斧:git push —— 同步到 GitHub 云端
git push origin main

如果是第一次推送,可能需要输入 GitHub 用户名和密码(或 token)。

其他常用命令

git status     # 查看当前状态
git log        # 查看提交历史
git pull       # 从云端拉取最新代码

多动手敲命令,遇到错误别慌——每个报错都是成长的机会。如果在某一步卡住了,不妨回头再看看例子,或者用 man 命令 查阅官方手册。加油 同志们!

(一篇即成功)Ubuntu下搭建qt环境和安装Qt Creator 只需一篇就成功搭建Ubuntu下的QT环境 你还在等什么 阅读详情

相关推荐

6.4 构网型储能的需求与配置

摘要: 构网型储能是新型电力系统的关键支撑技术,通过提供电压/频率形成、惯性和稳定控制能力,解决同步机退出导致的系统稳定性问题。其配置需遵循三大原则:1)容量配置以支撑需求为主导,兼顾能量服务;2)优先布局于电网薄弱点、稳定问题突出区域;3)采用自适应控制策略实现全工况优化。核心应用场景包括新能源送出通道稳定、负荷中心调频、黑启动电源等。规划方法需结合系统分析、量化指标和成本效益评估,实现技术经济最优。未来需重点关注构网/跟网混合系统的临界容量占比及自适应控制技术发展。

技术工作者 1140

初阶linux2环境基础开发工具完整教程

本文系统介绍了Linux下C/C++开发的完整工具链,涵盖七大核心内容:1)yum软件包管理器的安装使用;2)vim编辑器的三种模式及高效操作;3)gcc/g++编译器的四阶段编译流程及库链接原理;4)gdb调试工具的使用方法;5)Makefile项目自动化构建;6)进度条程序的实现原理;7)Git代码版本管理及Github上传流程。文章通过具体命令示例和图示,详细讲解了从环境配置、代码编写、编译调试到版本管理的全流程开发技能,是Linux开发者的实用指南。

code_whiter的博客 195

《统计学习方法》——李航 学习大纲

最近在学习李航写的统计学习方法概论, 每一章都用xmind理清了思路,括号里是书里的公式,第一次写博文,敬请指教~~~~ 第一章 统计学习方法论 第二章 感知机 每个方法其实只需要着重掌握三要素和输入输出就可以了,主要看模型、策略和算法。 感知机主要是二类分类的线性分类模型。 看到后面会注意感知机和支持向量机的区别。 第三章 k近

wjy619251334的博客 1万+

Linux 环境基础开发工具详解

在 Linux 中,软件包是经过预编译、打包的应用程序或工具,它类似于 Windows 系统中的安装程序。软件包可以通过包管理器进行管理,简化软件的安装、更新和卸载过程。常见的软件包后缀包括.rpm.deb等。yum(Yellow dog Updater, Modified)是 Linux 下非常常用的包管理器,主要应用于 Fedora、RedHat、CentOS 等发行版。它相当于 Linux 系统的"应用商店",用户可以通过 yum 工具轻松地获取和安装各种预编译好的软件包。yum的工作原理基于rpm。

2406_83947720的博客 2543

Dynamics 365从入门到精通:一站式掌握微软智能商业应用平台

很多新手学Dynamics 365时,容易陷入“死记功能”的误区,其实这款平台的核心价值不是“功能多全”,而是“能适配企业业务流程,通过生态集成提升效率”。先从具体业务场景入手,理解每个功能的实际价值;再通过生态集成拓展系统能力;最后通过开发实现定制化,满足企业的特殊需求。按照这个思路,新手不用害怕复杂,一步步落地实战,3个月就能从“入门”到“能独立负责项目”。如果在学习过程中遇到具体问题(比如部署报错、数据迁移失败),欢迎在评论区留言,我会结合实战经验帮你解答!

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1041

LM Studio 模型加载与转换实战指南:从GGUF格式到本地部署

本文提供了使用LM Studio加载与转换GGUF格式大语言模型的完整实战指南。详细阐述了为何GGUF格式是本地部署的最佳选择,并逐步指导用户如何将非GGUF模型(如Transformers格式)转换为GGUF格式,以及在LM Studio中进行加载、配置GPU卸载等关键优化,最终实现流畅的本地离线对话体验。

weixin_29061425的博客 921

Linux环境基础开发工具使用

Linux环境基础开发工具使用一级目录二级目录 Linux下安装软件的方式: 源代码安装 rmp包安装 yum命令安装 yum: 帮我们查找并下载软件 帮我们安装 帮我们解决依赖关系 yum是一条命令 一级目录 二级目录 ...

AI_ELF的博客 1万+

【DaVinci Developer实战指南】从入门到精通:软件组件设计与配置全解析

本文详细解析了DaVinci Developer在汽车电子开发中的核心应用,从软件组件设计到配置实战,涵盖Application SWC创建、RunnableEntity设计及Exclusive Area配置等关键环节。通过实际案例分享,帮助开发者快速掌握AUTOSAR架构下的ECU软件开发技巧,提升工作效率与系统稳定性。

weixin_30952535的博客 249

【Linux】Linux环境基础开发工具

三种模式正常模式插入模式底行模式我们一共有12种总模式,大家下来可以研究一下vim操作打开,关闭,查看,查询,插入,删除,替换,撤销,复制等等操作。

m0_74091744的博客 1236

【系统分析师】核心考点:100个高频知识点汇总

本文系统梳理了系统分析师考试的11大领域高频考点,重点解析了计算机硬件与体系结构的7个核心知识点:计算机五大部件(CPU/存储器/总线等)、校验码类型(奇偶/海明/CRC)、CISC与RISC指令系统对比、总线分类与特性、RAID磁盘阵列级别、流水线技术原理及Flynn系统分类法。内容涵盖硬件组成、数据校验、指令架构、存储技术等关键概念,通过表格对比和公式说明,为考生提供结构化的知识框架与备考重点。

数据知道的博客 5569

Windows 上 openclaw onboard --install-daemon 命令的安装位置和启动配置

摘要:Windows系统中,执行openclaw-cnonboard--install-daemon命令会创建计划任务OpenClawGateway,该任务在用户登录时自动运行位于%USERPROFILE%.openclaw\gateway.cmd的脚本文件来启动服务。管理方法包括通过任务计划程序或命令行(schtasks)查看/启停任务,使用openclaw gateway命令操作服务,或通过删除计划任务和脚本文件完全卸载服务。该机制确保OpenClawGateway服务随系统登录自动启动。(149字)

大坡3D软件开发 1375

从入门到精通:详解Linux环境基础开发工具的使用

从入门到精通:详解Linux环境基础开发工具的使用

m0_73150338的博客 2131

大模型——Coze工作流实战:一键生成像素风格视频

本文介绍了如何利用Coze平台工作流生成像素风格心理学短视频的方法。通过创建工作流、设置变量节点、调用大模型生成文案、数据格式化处理、合成音频、生成字幕等步骤,最终实现从输入主题到生成完整视频的自动化流程。文章详细展示了每个节点的具体配置方法,包括提示词编写和数据处理脚本,为读者提供了完整的像素风格视频制作解决方案。

819

Linux环境基础开发工具使用(2)

E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面-S 编译到汇编语言不进行汇编和链接-c 编译到目标代码-o 文件输出到 文件-static 此选项对生成的文件采用静态链接-g 生成调试信息。GNU 调试器可利用该信息。-shared 此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库.-O0-O1-O2-O3 编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高-w 不生成任何警告信息。

Mr_Xuhhh的博客 1041

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

深度学习工具包 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'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('DeepLearnToolbox'));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('state',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'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',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 = 'sigm';%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, 'Too big error');```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('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';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)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';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, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% 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'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 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, 'Too big error');```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('state',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, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',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, 'Too big error');%% ex3 neural net with dropoutrand('state',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, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % 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, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % 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, 'Too big error');%% 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('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % 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, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

【Linux升级之路】2_Linux环境基础开发工具使用

Linux工具学前常识,Linux编辑器vim的使用,sudo提权指令讲解/配置,Linux编译器gcc/g++的使用,项目自动化构建工具make/makefile的使用,工具实践(小程序-进度条),Linux环境下git的使用(以gitee平台为例讲解),Linux调试器gdb的使用

Captain_ldx的博客 728

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【Linux】环境基础开发工具的使用(一)

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

m0_64826370的博客 1758

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Linux环境基础开发工具使用(2)

Linux环境基础开发工具使用(2) 如何在gitee创建项目仓库?如何使用git上传项目?如何使用Linux:make/makefile? 如何在Linux中完成一个小程序进度条?如何使用Linux调试器-gdb? 这一篇文章给你答案!!!

wer24_25的博客 1527

Linux环境基础开发工具的使用

最后一列,base表示的是“软件源”的名称,类似于“小米应用商店”,“华为应用商店”这样的概念。​ 从上图可以发现,想要得到可执行程序,我们首先要得到test.o文件,要得到test.o文件就要得到test.s文件,以此类推,只要我们写好了源代码,通过这样的依赖关系和依赖方法,最终就能得到可执行程序。​ 项目清理类似于VS下的清理解决方案,也就是将之前生成的所有文件清理掉,如果我们进行手动清理,那么在有多个文件的情况下,手动清理未免太过麻烦,此时我们可以将项目加入到Makefile文件中。

qq_55317476的博客 968

Linux的基础开发工具

本文介绍了Linux开发环境中的常用工具链,包括:1)包管理器yum的使用与镜像源配置;2)vim编辑器的命令/底行模式操作及配置技巧;3)gcc/g++编译器的四个编译阶段(预处理/编译/汇编/链接)和动静态库区别;4)make/Makefile自动化构建工具的基本语法和变量使用;5)git版本控制的基本工作流;6)gdb/cgdb调试器的常用调试命令。文章以CentOS 7.9为基础,重点讲解了各工具的核心功能、典型用法和配置技巧,帮助开发者快速搭建高效的Linux开发环境。

博客 | 复习知识点 + 练习 + 最终的领悟 | 全力以赴 3773

【Linux】Linux环境基础开发工具_2

按 X :可以向左侧删除(删除光标所在行的左侧字符)。按 p :可以将缓冲区的字符粘贴到光标所在的下一行。按 dd :删除光标所在行,剪切功能,可以使用粘贴。按 q 是没有用的,要按。按 h :将光标向左移动一格,相当于方向键的 ←。按 j :将光标向下移动一格,相当于方向键的 ↓。按 k :将光标向上移动一格,相当于方向键的 ↑。按 l :将光标向右移动一格,相当于方向键的 →。按 w :可以按单词在行内从左向右移动。按 b :可以按单词在行内从右向左移动。按 yy :将光标所在行复制到缓冲区。

m0_69828905的博客 782

【Linux】linux环境基础开发工具使用

一、调试器gdb 二、make/Makefile 三、git 1、安装git sudo yum install git 2、远端创建仓库 1、注册gitee账号后,进入页面根据下图建仓库 2、命名仓库,并简单设置属性 3、复制https地址 3、git“三板斧”上传代码到仓库 ...

m0_47646784的博客 9632

Linux环境基础与开发工具使用

本文系统介绍Linux开发工具链:VIM三种模式及常用命令、静态库与动态库区别、GCC编译流程、Makefile自动化构建逻辑,以及Git代码上传远端的核心操作,为开发者提供基础工具使用指南。

fyy31的博客 1236

【Linux】Linux基础环境开发工具使用(上)

【Linux】Linux基础环境开发工具使用(上)

2301_78022459的博客 830
上一篇: C++8(string类)
下一篇: C++9(vector)
code_whiter
博客等级 码龄2年 289粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值