
linux
文章平均质量分 66
u012903992
这个作者很懒,什么都没留下…
展开
-
Linux驱动实践:带你一步一步编译内核驱动程序
在刚才的 Kconfig 参数配置中,CONFIG_HELLO 被设置为 y,于是这句话就被翻译成: obj-y += hello,表示把 hello 驱动编译进内核。虽然文章内容很漂亮,但是不知道怎么去实践、验证。打印信息的级别有好几个,从 DEBUG 到 EMERG,这里使用的是 KERN_ALERT,方便查看打印信息。CONFIG_HELLO 可以看做一个变量,在编译的时候,这个变量的值可能是:y, n 或者 m。每一篇文章的介绍都是正确的,但是如果把很多文章放在一起看,就会发现怎么说的都不一样啊?原创 2024-03-21 19:57:21 · 3878 阅读 · 0 评论 -
linux内核编译详解
前言Linux内核是的核心,也是整个Linux功能体现的核心,就如同发动机在汽车中的重要性。内核主要功能包括进程管理、内存管理、文件管理、设备管理、网络管理等。Linux内核是单内核设计,但却采用了微内核的模块化设计,支持内核线程以及动态装载内核模块的能力。Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新。新的内核修订了旧内核的bug,并增加了许多新的特性。如果用户想要使用这些新特性,或想根据自己的系统定制一个更高效、更稳定的内核,就需要手动编译Linux内核。那么如何编译内核呢?原创 2024-03-21 19:24:21 · 1075 阅读 · 0 评论 -
Linux内核编译与安装
Linux内核是一个用C语言写成的,符合POSIX标准的类Unix操作系统。内核是操作系统中最基本的一部分,提供了众多应用程序访问计算机硬件的机制。Linux内核的一大特点就是采用了整体式结构,有很多过程组成,每个过程都可以独立编译,其模块机制又湿得内核保持独立而又易于扩充。Linux发行版实在Linux内核的基础之上,与外带的应用软件和工具打包配置之后发行的版本。原创 2024-03-21 19:19:44 · 1936 阅读 · 0 评论 -
libc和glibc有什么区别
libc(C Library)是一个常见的术语,指的是C语言的标准函数库,提供了许多函数和常量供C语言程序使用。在不同的操作系统中,libc可能是不同的,但是它们都实现了C语言的标准库函数。特性和功能:glibc相比于一些传统的libc实现来说,提供了更多的特性和功能,包括对国际化、线程安全、动态内存管理等方面的支持。glibc(GNU C Library)是一种常见的libc实现,是GNU项目的一部分。它是Linux系统中最常用的libc实现,也是许多其他基于Unix的操作系统所使用的。原创 2023-09-08 20:53:25 · 2027 阅读 · 0 评论 -
linux系统中proc目录的相关介绍
简介进程进程状态进程详细信息硬件信息网络信息系统信息/proc目录是 Linux 操作系统中的一个虚拟文件系统,它提供了对内核运行中进程的访问。/proc目录下存放了一系列以数字命名的目录和文件,用来表示系统中的进程、硬件、网络、内存等信息。原创 2023-08-25 19:13:11 · 1138 阅读 · 0 评论 -
CMakeLists.txt文件是什么?如何使用
CMake 是一个跨平台的构建工具,可以自动生成特定平台的构建脚本(如 Makefile 或 Visual Studio 项目文件),方便用户在不同的操作系统和开发环境中使用统一的方式进行构建。CMakeLists.txt 文件通常位于项目的根目录下。只是一个简单的示例,实际的 CMakeLists.txt 文件可以根据项目的需求和复杂度进行更多的配置。使用 CMakeLists.txt 文件的好处是可以实现跨平台编译,在不同的操作系统和开发工具中都可以使用同样的配置文件进行项目构建。原创 2023-08-25 19:01:52 · 2144 阅读 · 0 评论 -
objdump命令和nm命令有什么区别
可以查看二进制文件的汇编代码、符号表、重定位表、段信息等,它可以用来分析二进制文件的结构和代码实现。主要用于查看二进制文件的符号表,它可以列出二进制文件中定义的符号和引用的符号,以及它们的地址和类型。可以用来查看ELF格式的可执行文件、共享库文件和目标文件的符号表信息。因此,如果你需要查看二进制文件的汇编代码、重定位表、段信息等,可以使用。可以用来查看ELF格式的可执行文件和共享库文件的信息。如果你只需要查看二进制文件的符号表信息,可以使用。都是二进制文件分析工具,但它们的功能略有不同。原创 2023-07-18 20:24:49 · 610 阅读 · 0 评论 -
so文件和可执行文件的区别是什么
so文件是一种共享库文件,它包含了一组可被其他程序调用的函数和数据。so文件通常被多个程序共享,可以被动态加载到内存中,以便程序在运行时调用其中的函数。so文件通常是编译好的库文件,例如Linux系统中的so文件通常以ELF格式存储。可执行文件通常是独立的程序,可以直接运行,例如Linux系统中的可执行文件通常以ELF格式存储。可执行文件是独立的程序,可以直接运行,而so文件是共享库文件,需要被动态加载到内存中才能被其他程序调用。so文件和可执行文件都是二进制文件,但它们的用途和加载方式不同。原创 2023-07-18 20:22:53 · 865 阅读 · 0 评论 -
Linux主机文件777,755,644权限详解
二、具备写入权限的文件或目录,不能赋予执行权限 也许你不懂具体的是什么意思,再看两个例子:1.像功能执行文件或功能管理目录下的文件或目录,都是具备执行权限要求的,一般不能赋予写入权限;2.像附件上传,这类的文件或存放目录,都是具备写入权限的文件或目录,一般不能赋予其执行权限。其中每个权限都有三位数字组成,第一位表示所有者的权限,第二位表示同组用户权限,第三位表示公共用户权限,r代表读取权限等于4,w代表写入权限等于2,x代表执行权限等于1。第一位6等于4+2+0,所以就是rw-,所有者有读取、写入的权限;原创 2023-06-13 19:16:04 · 2767 阅读 · 1 评论 -
在linux上创建crypto_LUKS格式的块设备
上访问该设备上的文件。请注意,在完成使用设备后,需要逆序进行清理操作,包括卸载文件系统、关闭映射和释放循环设备。请根据您的环境和需求进行相应的调整。格式化 crypto_LUKS 卷上的文件系统。现在,您已经成功地创建了一个块设备并将其格式化为 crypto_LUKS,可以在挂载点。上的 crypto_LUKS 卷,并将其映射到。创建一个空白文件,作为块设备的基础。执行此命令后,系统将提示您确认并设置卷的密码。这将创建一个大小为 100MB 的空白文件。循环设备(其中 X 是一个数字)。原创 2023-05-18 19:37:09 · 795 阅读 · 0 评论 -
vim粘贴代码时缩进混乱
中粘贴代码时,发现插入的代码会有多余的缩进,而且会逐行累加。原因是终端把粘贴的文本存入键盘缓存(Keyboard Buffer)中,Vim则把这些内容作为用户的键盘输入来处理。导致在遇到换行符的时候,如果Vim开启了自动缩进,就会默认的把上一行缩进插入到下一 行的开头,最终使代码变乱。转载 2022-11-12 16:38:22 · 1173 阅读 · 0 评论 -
Linux环境变量配置
在自定义安装软件的时候,经常需要配置环境变量,下面列举出各种对环境变量的配置方法。下面所有例子的环境说明如下:系统:Ubuntu 14.0用户名:uusama需要配置MySQL环境变量路径:/home/uusama/mysql/binLinux读取环境变量的方法:export命令显示当前系统定义的所有环境变量echo $PATH命令输出当前的PATH环境变量的值这两个命令执行的效果如下uusama@ubuntu:~$ exportdeclare -x HOME="/hom转载 2022-05-17 11:00:28 · 1214 阅读 · 0 评论 -
gdb基本命令(非常详细)
gdb基本命令本文介绍使用gdb调试程序的常用命令。主要内容:[简介][举例][其他][简介]=============GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。同时GDB也具有例如ddd这样的图形化的调试端。一般来说,GDB主要完成下面四个方面的功能:(1)启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。(2)可让被调试的程序...原创 2022-03-21 22:30:39 · 5069 阅读 · 0 评论 -
Windows下程序向Linux下移植实践
一、问题的提出 在程序员中有这样一个说法,若一个程序不能移植到Linux下,那这个程序将看不到未来。由于Linux操作系统源码公开是的,开发库等辅助工具都是源码公开的,这样就减少了程序的不可预知性,而且出现错误可以大家一起修正、完善,而Windows平台下所有的操作系统Api就给了个接口,即使出现莫名奇妙的错误也只能望着接口兴叹了。再加上Linux操作系统本身和它上面的许多工具软件是免费的,更是吸引了更多的公司和程序开发人员将程序开发转向Linux。在程序跨平台的移植过程中,将存在操...原创 2022-03-09 20:48:22 · 3080 阅读 · 0 评论 -
linux系统故障排查(一):CPU使用率过高
一、通过top命令定位占用cpu高的进程执行top命令得到以下结果(P按照进程负载排序):通过上图可以明显看出进程PID2221明显存在问题,定位到了进程id。为了更好的排查问题,下面详细介绍top命令显示的含义。1)第一行是任务队列信息top - 14:06:34 up 537 days, 6 min, 6 users, load average: 0.41, 0.45, 0.43任务队列信息 含义14:06:34 当前时间537 days 系统运行时间6 min...转载 2021-04-06 15:35:19 · 484 阅读 · 0 评论 -
实际工作中常用的linux命令,面试被问频率较高的命令
现在做测试的出去面试,都会被问到linux,不会几个linux指令都不好意思说自己是做测试的了,本篇收集了几个被问的频率较高的linux面试题。之前面试被问过,一直想抽空整理下,网上的资源很多,但是其实经常使用和被问到的就是这么一些。今天抽空整理了一些。欢迎大家指正。目录常用指令ps查看进程kill 杀掉进程启动服务查看日志查看端口find查找文件查看文件常用指令1.说出10个linux常用的指令 ls 查看目录中的文件 cd /home 进入转载 2021-03-11 15:50:38 · 169 阅读 · 0 评论 -
Centos7 cmake 版本升级
一、基本信息说明官网https://cmake.org/下载地址https://cmake.org/files/二、系统、工具1、系统版本Centos7.5 CentOS-7-x86_64-Minimal-18042、工具:xshell5三、升级、安装1、安装 cmake 查看版本 [root@localhost ~]# yum install -y cmake [root@localhost ~]# cmake -version ...原创 2020-11-25 17:08:12 · 723 阅读 · 0 评论 -
Makefile 添加宏定义
在Makefile 中添加宏定义可以用来控制源码的编译,通过CFLAGS中的选项-D定义即可,如:CFLAGS += -DG_DEBUG上述即添加了向源码添加了宏定义:G_DEBUG。源码中可通过该宏定义来进行debug信息的控制,如:#ifdef G_DEBUG printf("debug on...\n");#endif...原创 2020-11-07 11:51:55 · 6287 阅读 · 0 评论 -
linux下执行bin不加./怎么直接运行
在linux平台下,我们编译的可执行bin文件,如果需要运行,则直接./test 即可运行, 如果我们不想加上./怎么直接运行test这个bin呢? 我们先来分析下这个./test是啥意思,首先test是可执行bin的名字,./表示是当前目录,那么简单了,其实./就是告知test的路径。 我们可以echo $PATH, 可以查看当前设置的环境变量,我们吧test的路径,加入到PATH变量中去,那么就可以直接执行test了。...原创 2020-11-05 16:31:52 · 1035 阅读 · 0 评论 -
Linux下undefined reference to ‘pthread_create’问题解决
Linux下undefined reference to ‘pthread_create’问题解决在试用Linux 线程模块时,试用pthread_create 函数。编译命令为gcc main.c -o test时,会出现如下错误/tmp/ccIvH3bU.o: In function `main':main.c:(.text+0x81): undefined reference to `pthread_create'collect2: error: ld returned 1 exi..原创 2020-10-31 11:04:00 · 1198 阅读 · 0 评论 -
Firewalld防火墙 常见命令
1、firewalld的基本使用启动: systemctl start firewalld查看状态: systemctl status firewalld停止: systemctl disable firewalld禁用: systemctl stop firewalld2.systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。启动一个服务:systemctl start firewalld.service..原创 2020-10-19 11:40:54 · 1745 阅读 · 0 评论 -
CentOS7出现Unit iptables.service could not be found
CentOS7默认的防火墙不是iptables,而是firewalle.出现此情况可能是iptables防火墙未安装。#停止firewalld服务systemctl stop firewalld#禁用firewalld服务systemctl mask firewalld开启systemctl unmask firewalld安装iptables-services:yum install iptables-services设置开机启动:systemct原创 2020-10-19 11:12:59 · 5260 阅读 · 0 评论 -
Makefile.am文件详解
原文:https://blog.youkuaiyun.com/u013485792/article/details/51355668Makefile.am是一种比Makefile更高层次的编译规则,可以和configure.in文件一起通过调用automake命令,生成Makefile.in文件,再调用./configure的时候,就将Makefile.in文件自动生成Makefile文件了。所以Makefile.am文件是比Makefile文件更高的抽象。下面我根据自己的工作中的一些应用,来讨论Makefil转载 2020-10-13 14:45:31 · 9454 阅读 · 0 评论 -
Makefile.am详解
实战Makefile.amMakefile.am是一种比Makefile更高层次的规则。只需指定要生成什么目标,它由什么源文件生成,要安装到什么目录等构成。表一列出了可执行文件、静态库、头文件和数据文件,四种书写Makefile.am文件个一般格式。表 1Makefile.am一般格式对于可执行文件和静态库类型,如果只想编译,不想安装到系统中,可以用noinst_PROGRAMS代替bin_PROGRAMS,noinst_LIBRARIES代替lib_LIBRARIES。Makefile.am还提原创 2020-10-13 14:41:37 · 4229 阅读 · 0 评论 -
CFLAGS = -Wall -Werror -g -O0
使用gcc编译阶段,最常用的编译选项CFLAGS = -Wall -Werror -g -O0的解释:-Wall:编译阶段显示所有警告。-Werror:将所有的警告当成错误进行处理,使出现警告时就停止编译。 常见编译报错:cc1: warnings being treated as errors 。解决方法是:把-Werror去掉,不把warnning当作error处理。-g:编译器在编译时,产生调试信息,最终产生供gdb调试使用的可执行文件。用了-g选项生成的a.out会比没用-g选...原创 2020-10-13 14:20:59 · 3108 阅读 · 0 评论 -
用automake制作makefile带静态库和动态库的
原文:https://www.oschina.net/question/143474_387021. 目录结构如下:example|——src 目录(存放源代码文件) |——hello.c|——lib 目录(存放用来生成库的文件) |——test.c 用来生成静态库libhello.a|——include 目录(存放程序中使用的头文件) |——hello.h2. 编写的各个目录下的源文件hello.h 文件extern void pr...转载 2020-10-12 16:05:49 · 721 阅读 · 0 评论 -
linux 下 g++编译程序时,-I(大写i) 与-L(大写l)-l(小写l) 的作用
作为一个linux入门级使用者,gcc/g++ 的简单操作已经用过多次, 但是有时稍微复杂一点的程序就会使用到库。在遇到问题的时候我查了挺多前辈总结的资料,也留个脚本希望对朋友们有个帮助。如果也能处理你的问题,我会感到很开心,嘻嘻。例如:libz.sog++ -o compress compress.cpp -I/home/include/ -L/lib/ -lz(1) -I (大写i)编译程序按照-I指定的路进去搜索头文件。-I/home/include/表示将-I/ho...原创 2020-10-12 10:55:54 · 663 阅读 · 1 评论 -
浅析静态库和动态库的区别及linux下二者的生成和使用
从编程的角度来讲,库文件通常被分为静态库文件和动态库文件,其目的在于将部分代码封装在一起编译后供自己或他人调用,好处在于编译后的库文件看不到源代码,可保密,同时不会因为不小心修改了函数而出问题,便于维护。但是二者之间存在一定的差异。 1.静态库: 静态库在Windows操作系统中是.lib文件,在Linux下是.a文件,相当于中间(.o)文件的集合,是在程序链接时使用,讲静态库中的文件直接合成到最后的可执行文件中去,程序运行时,则不再需要静态库的支持。在linux下静态库的生成及使用方法如下...原创 2020-10-12 10:34:26 · 278 阅读 · 0 评论 -
Linux下如何查看哪个进程占用内存多?
1、top top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器 可以直接使用top命令后,查看%MEM的内容。可以选择按进程查看或者按用户查看,如想查看oracle用户的进程内存使用情况的话可以使用如下的命令: $ top -u oracle 内容解释: PID:进程的ID USER:进程所有者 PR:进程的优先级别,越小越优先被执行 NInice:值 VIRT:进程占用的虚拟内存 RE.原创 2020-09-22 15:54:26 · 2679 阅读 · 0 评论 -
Linux用户相关文件之/etc/pssswd文件
1.文件地址: /etc/pssswd -rw-r--r--. 1 root root 936 10月 6 12:50 /etc/passwd2.文件内容: xiaol_1:x:501:501::/home/xiaol_1:/bin/bash3.信息含义: 第1个字段:用户名称 第2个字段:密码标志 第3个字段:UID(用户ID) 超级用户:0 系统用户:1-499(不能登录,不要删除,不要修改) 普通用户:500-65535 第4个字段:GID(用原创 2020-09-15 10:16:34 · 354 阅读 · 0 评论 -
Linux三剑客之awk命令
awk简介awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母。实际上 AWK 的确拥有自己的语言: AWK 程序设计语言 , 三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。awk是一种很棒的语言,它适合文本处理和报表生成,其语法较为常见,借鉴了某些语言的一些精华,如C语言等。在linux...原创 2020-09-03 14:56:56 · 260 阅读 · 0 评论 -
ipcs 命令 分析消息队列、共享内存和信号量
ipcs - 分析消息队列、共享内存和信号量引用它的语法:ipcs [-mqs] [-abcopt] [-C core] [-N namelist]-m 输出有关共享内存(shared memory)的信息-q 输出有关信息队列(message queue)的信息-s 输出信号量(semaphore)的信息# ipcs -mIPC status fromas of 2007年04月10日 星期二 18时32分18秒 CSTT ID KEY MODE OWNER GROUPSh.原创 2020-08-14 16:55:55 · 675 阅读 · 0 评论 -
linux ipcs字段含义 共享内存删除 ipcs dest状态
//查看共享内存[app_usr@js2test01 shell]$ ipcs------ Shared Memory Segments --------key shmid owner perms bytes nattch status 0x0122f9df 12419074 app_usr 666 70604918 0 0x0001b3ef 14450...原创 2020-08-14 16:49:48 · 1354 阅读 · 0 评论 -
GDB 提示 ptrace: Operation not permitted.的解决办法
之前好几次遇到这个问题,我用gdb attach 进程后,会提示ptrace: Operation not permitted.以前的解决办法是关掉服务器进程,然后重新attach就可以了。今天到公司又遇到这个问题,查看服务器进程还在,网上搜索,说是有gdb在正在调试该进程,然后我用ps -ef | grep gdb 查看,果然有gdb正附加到服务器进程上,想想是上周我attach后,没有关闭gdb。然后下班走人,结果ssh软件自动关闭,gdb跑到后台运行了。我尝试恢复这个gdb进程,输入 bg,fg,..原创 2020-08-11 21:28:47 · 2705 阅读 · 1 评论 -
kafka的OffsetOutOfRangeException
从把spark 从1.3升级到1.6之后,kafka Streaming相关问题频出。最近又遇到了一个。job中使用Kafka DirectStream 读取topic中数据,然后做处理。其中有个测试job,停止了几天,再次启动时爆出了kafka.common.OffsetOutOfRangeException。下文记录下异常分析与解决过程。异常分析从字面意思上,说是kafka topic的offset越界异常;在job中使用的是Kafka DirectStream,每成功处理一批数据,就把对应的.原创 2020-07-08 11:00:03 · 1818 阅读 · 0 评论 -
linux卸载mysql(完全卸载)
//rpm包安装方式卸载查包名:rpm -qa|grep-i mysql删除命令:rpm -e –nodeps 包名 //yum安装方式下载1.查看已安装的mysql命令:rpm -qa | grep -i mysql2.卸载mysql命令:yum remove mysql-community-server-5.6.36-2.el7.x86_64查看mysql的其它依赖:rpm -qa | grep -i mysql //卸载依赖yum remove mysql-libsyum..原创 2020-07-07 14:47:48 · 243 阅读 · 0 评论 -
镜像部署 WordPress 个人站点
操作场景本文档介绍如何在腾讯云云服务器(以下简称 CVM)上安装 WordPress 镜像来启动并运行一个网站。您将了解如何配置并启动 CVM 实例,如何获取 WordPress 用户名和密码,以及如何登录 WordPress 管理页面。如果没有云服务器,可以建议去腾讯云购买,首年不到100元就能买一台,用于学习各种linux环境非常合算。技能要求腾讯云市场中提供了 WordPress 镜像,如果您不熟悉 Linux 命令的使用,建议您通过镜像部署 WordPress 个人站点。如果您对原创 2020-07-07 09:51:25 · 485 阅读 · 0 评论 -
手动搭建 WordPress 个人站点(Linux)
WordPress 是一款使用 PHP 语言开发的博客平台,您可使用通过 WordPress 搭建属于个人的博客平台。本文以 CentOS 7.6 操作系统的腾讯云云服务器为例,手动搭建 WordPress 个人站点。如果没有云服务器,可以建议去腾讯云购买,首年不到100元就能买一台,用于学习各种linux环境非常合算。进行搭建 WordPress 个人博客,您需要熟悉 Linux 命令,并对所安装软件的使用及版本兼容性比较了解。注意:腾讯云建议您可以通过云市场的镜像环境部署 WordPr原创 2020-07-06 20:52:40 · 593 阅读 · 0 评论 -
Linux彻底卸载Nginx
本机环境:centos7使用yum安装的Nginx1.首先输入命令 ps -ef | grep nginx检查一下nginx服务是否在运行。[root@localhost /]# ps -ef |grep nginxroot 3163 2643 0 14:08 tty1 00:00:00 man nginxroot 5427 1 0 14:50 ? 00:00:00 nginx: master process nginxn.原创 2020-07-01 18:15:26 · 1594 阅读 · 0 评论 -
LINUX安装nginx详细步骤
1.安装依赖包//一键安装上面四个依赖yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel2.下载并解压安装包//创建一个文件夹cd /usr/localmkdir nginxcd nginx//下载tar包wget http://nginx.org/download/nginx-1.13.7.tar.gztar -xvf nginx-1.13.7.tar.gz3.安装nginx//进入nginx转载 2020-07-01 17:35:31 · 226 阅读 · 0 评论