@TOC
【Linux】make及mkfile文件配置教程
1.make/mkfile的简单介绍自动化构建程序make是一个命令,makefile是一个文件——依赖关系和依赖方法依赖关系:我为什么要帮你?Why?依赖方法:我怎么帮你?How?
2. 如何使用?目标文件:依赖文件列表(tab键) 依赖关系
首先写一个简单的程序
3. 写入
创建makefile文件,进行写入;
项目的自动化构建 编译文件
12mybin:mytest.cpp g++ -o mybin mytest.cpp
项目自动化清理 清理文件 -不需要依赖文件
1234mybin:mytest.cpp g++ -o mybin mytest.cppclean: rm -f mybin
make和makefile形成目标文件时,默认从上往下扫描makefile文件,执行第一个执行方法(默认形成第一个文件)。
默认只执行一个。
我们思考一个问题:make、makefile怎么会知道mybin是最新的呢?make依靠时间对比是否重新编译,只要可执行程序比所有源文件最近的时间(ACM)都新,就说明 ...
引言在使用Linux的过程中,命令行是我们最常使用的工具之一。而在命令行中,重定向(Redirection)是一个非常有用的功能。什么是重定向呢?顾名思义,就是把数据的流向重新定义。 通过重定向,你可以将命令的输出保存到文件中、将错误信息分离、或者将输入重定向到命令。这不仅可以提高工作的效率,还能让你更灵活地管理和处理数据流。这篇博客将深入介绍Linux中的重定向,帮助你更高效地使用命令行。
一、什么是重定向?定义: 重定向是在命令行中将输入和输出流从默认位置(通常是屏幕或键盘)重定向到其他地方(如文件或设备)的过程。
三种主要的流:
标准输入(stdin): 默认是键盘输入,文件描述符为0。
标准输出(stdout): 默认是显示屏输出,文件描述符为1。
标准错误(stderr): 默认是显示屏输出,专门用来输出错误信息,文件描述符为2。
二、常见重定向1. 基本输出重定向 >
使用>将命令输出保存到文件,若文件存在则覆盖。
1ls > output.txt #将1s命令的输出重定向到output.txt文件
2. 追加重定向 >>
使用> ...
引言欢迎来到Linux的世界!如果你对这个强大的操作系统感兴趣,但又不知道从哪里开始,那么你来对地方了。Linux以其稳定性和灵活性闻名,几乎无处不在,从服务器到你的智能设备。
对于新手来说,命令行可能看起来有点吓人,但其实掌握一些基本指令就能让你在Linux上如鱼得水。这篇博客会带你快速认识那些关键的Linux指令,帮你轻松搞定文件管理、系统信息查看,还有权限设置等等。
无论你是Linux的新朋友,还是想要巩固基础,这里都有你需要的实用技巧和例子。准备好了吗?让我们一起开启这段Linux之旅吧!
0. 快速学习几个命令su - 切换到另一个用户账户 (substitute user)1234su // 切换到root用户,要求输入root用户的密码su - username // 切换到指定用户的环境,类似于该用户登录su -c "whoami" // 切换到root用户并执行`whoami`命令,然后退出su -s /bin/bash username // 使用指定的bash shell切换到指定用户
whoami 显示当前用户的用户名
who 显示 ...
Linux的前世今生Linux,一个改变世界的小企鹅
欢迎来到Linux的世界!虽然Linux看起来像个可爱的企鹅,但它在数字世界中的影响力却不容小觑。从智能手机到服务器,再到超级计算机,Linux默默地支撑着我们日常生活中的许多技术。
Linux的故事始于一个芬兰大学生的梦想,发展成了全球开源运动的象征。接下来,我们将探索Linux的起源、发展历程和广泛应用,看看它是如何改变科技世界的。
无论你是技术高手还是新手,相信这段旅程都会让你对Linux有全新的认识。准备好了吗?让我们开始这段精彩的Linux探险吧!
Linux的起源
Unix的诞生要聊Linux,咱得先从Unix说起。20世纪60年代末,贝尔实验室的几位天才程序员搞出了Unix,一个多用户、多任务的操作系统。Unix的设计简洁而强大,迅速在学术界和工业界流行开来。可以说,Unix为后来的操作系统,尤其是Linux,打下了坚实的基础。
Linus Torvalds和Linux内核故事的转折点发生在1991年,那时一个叫Linus Torvalds的芬兰大学生决定自己动手,丰衣足食。他想要一个能在386架构的PC上运行的操作系 ...
题目链接:倒置字符串__牛客网 (nowcoder.com)
题目描述:
将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I依次输出倒置之后的字符串,以空格分割
输入:
I like beijing.
输出:
beijing. like I
🔓解法一【下标访问】📖流程描述:
整体逆置
reverse(s.begin(), s.end());
部分逆置end遇到’ ‘时,逆置(s.begin()+begin,s.begin()+end)begin到end的下一位,++end继续遍历,直到s[end] 为0退出循环,完成逆置;注意:最后一个位置为’\0’时不会逆置,需要在出循环时对最后一个单词逆置
⌨️代码实现:
12345678910111213141516171819202122232425262728#include <iostream>#include <string>#include <algorithm>using namespace std;in ...
12var dd = “hello”;dnqoindq
题目链接:返回小于 N 的质数个数_牛客题霸_牛客网 (nowcoder.com)
题目描述:
返回小于 N 的质数个数
示例:输入:10输出:4说明:N=10,质数有 [2, 3, 5, 7]
💡📖流程描述:质数只能被1和自身整除的数
遍历判断是否为质数;
判断质数(优化:0、1和偶数不是质数)跳过偶数;
⌨️代码实现:
12345678910111213141516171819202122232425262728#include <iostream>using namespace std;// 2. 判断质数int is_prime(int x){ if (x == 0 || x == 1) return 0; //2.1 0和1不是质数 if (x == 2) return 1; //2.2 2是质数 if (x % 2 == 0) return 0; //2.3 除2外偶数不是质数 int i = 3; for (; i * i <= x; i += ...
cpp/stl/stack_queue
题目链接:栈的压入、弹出序列_牛客题霸_牛客网 (nowcoder.com)
题目描述:
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。
0<=pushV.length == popV.length <=1000
-1000<=pushV[i]<=1000
pushV 的所有数字均不相同
示例1:输入:[1,2,3,4,5],[4,5,3,2,1]返回值:true说明:可以通过push(1)=>push(2)=>push(3)=>push(4)=>pop()=>push(5)=>pop()=>pop ...
@TOC
gdb代码调试
1. 软件发布形式一般的软件发布有两种:
debug:可以被调试,形成的可执行程序会添加调试信息—>用户不需要+体积大 release:形成的可执行程序会去掉调试信息(面向用户)调试时使用的是debug模式
gcc/g++编译时动态链接,默认release发布
gcc -o $@ $^ -g -g以debug方式发布可执行呈现的格式->ELF redelf
2. 安装gdbyum install -y gdb:安装gdb调试软件
3. 调试命令 l 行号/函数名/文件名 显示代码内容(记录最近一次操作,下方向键) r 重新运行 c (continual)运行到下一个断点b (Break point)打断点——进行范围定位排除b 行号/内容打断点b 文件名:行号info b用来查看断点d 断点编号删除断点disable 断点编号 禁用断点enable 断点编号 使能(禁用/开启)断点
n (next)逐过程s(step)逐语句
逐语句( ;为分隔符):进入一个函数(对应VS中的F11)逐过程:每一行看作一个整体 ...
本文使用到的工具有gcc vim make/makefile,边学习边实践,快速上手!
@TOC
【Linux】用C语言实现第一个小程序——“进度条”
首先我们补充两个小知识
1. 两个补充1.1).makefile文件编写先写通makefile,防止源文件被覆盖或删除
12345processbar:main.c gcc -o $@ $^ .PHONY:clean clean: rm -f processbar
![[Pasted image 20231107174117.png]]生成可执行文件,第一步makefile文件编写完成。
1.2). 介绍休眠函数sleep():
函数库文件<unistd.h>sleep(3) 程序休眠3秒后退出unistd.h是unix std的意思,包含了许多UNIX系统服务的函数原型。
现象1)加‘\n’后会再显示器显示,光标闪动3秒后停止:
2)不加’\n’ 系统会休眠3秒,之后再显示器显示:
以上现象体现了c语言提供的缓冲区,2)在休眠时候就已经结束了,c语言是顺序结构,从上往下按顺序执行 ...
@TOC
先单趟在再整体
插入排序直接插入排序(InsertSort)思想
举例——>摸牌
在有序的数组中摸一张牌插入到前面合适的位置中去插入排序的逻辑,摸到一张牌后和最后的比较大小,大则插入在后面,使得总体有序。
实现
单趟
先排单趟,比较到要插入数据与前一个数据(end)比较大小,比该数大则插入到该数后面,直到比较到第一个数据为止插入到首元素位置(循环条件为end>=0)。先将要插入元素保存到tmp中,该位置为end+1,等到合适位置后插入到end+1中去。为处理end比较完没找到的(tmp最小)的情况,当tmp>=end时,跳出while,在循环外交换。每次比较完后end--向前比较单趟如下![[Pasted image 20230925213125.png]]
总体
共有n个数据,至少比较n次,故在用for循环,由于end+1的存在,i<=n-2/i<n-1;拿到一个乱序数组,从第一个数据向后排序,故end=i,
代码123456789101112131415161718192021void InsertSort(int ...










