linux
文章平均质量分 56
查尔斯是码农
静下心来、读本书
展开
-
device_create() 创建设备节点,device_del()删除设备节点
device_create() 创建设备节点,device_del()删除设备节点原创 2022-12-25 21:50:24 · 2954 阅读 · 0 评论 -
g++ 如何连接C的动态库
1 背景用g++ 编译动态库的时候,连接了其他开发人员提供的动态库;忽略了c动态库与g++编译的差异性;折腾了半天才找到原因2 解决方式(1)g++编译动态库g++ -shared -fPIC -o libobject.so test.cpp -L ./ -lotherc无论libotherc.so 是C的动态库还是c++的库,均可以编译通过;但是在不同的操作系统下,ldd 生成的目标文件(libobject.so)可能会建立动态链接,也可能不能建立;(2)使用动态库但是在使原创 2022-04-24 21:15:10 · 2457 阅读 · 0 评论 -
linux 设备文件管理udev详解
1 udev是什么? udev 是 Linux2.6 内核里的一个功能,它替代了原来的 devfs,成为当前 Linux 默认的设备管理工具。udev 以守护进程的形式运行,通过侦听内核发出来的 uevent 来管理 /dev目录下的设备文件。不像之前的设备管理工具,udev 在用户空间 (user space) 运行,而不在内核空间 (kernel space) 运行。 工作流程示意图如下:2.0devfs 概述: linux下有专...原创 2021-08-12 14:28:03 · 907 阅读 · 0 评论 -
linux 调用不同动态库,导入符号冲突问题
1 问题描述假设存在两个库libA.so,libB.so,内部有相同的函数名TestFunc,但是各自实现不一样。例如:在libA.so中,函数TestFunc 打印 “This is libA.so TestFunc ” 在libB.so中,函数TestFunc 打印 “This is libB.so TestFunc”其中函数TestFunc 都在可执行程序program中使用到,通过dlopen()函数的方式连接。然后在实际运行program...原创 2021-03-03 16:25:49 · 714 阅读 · 1 评论 -
C++ pthread 线程传参
线程传参(1)pthread_create(&semop_threadID, NULL, semopFun, a); int类型地址赋值给void *(2)num = (int *) param; void * 强制转换成 int *运行结果编译:g++ -o pthread pthread.cpp -lpthread测试1...原创 2021-02-24 15:56:21 · 1125 阅读 · 0 评论 -
函数传递指针
方式一:主函数指针初始化,子函数对指针值进行赋值#include <iostream>using namespace std;void sonFunc(int *c){ *c = 100; printf("The value of the C is :%d\n",*c); printf("The address of the C is :0x%x\n",c);}int main(){ int a = 10; int原创 2021-02-22 19:09:04 · 2444 阅读 · 0 评论 -
用函数入口地址调用函数
0 函数入口地址如果在程序中定义了一个函数,在编译时会把函数的源代码转换为可执行代码并分配一段存储空间。这段内存空间有一个起始地址,也称为函数的入口地址。函数名代表函数的起始地址。调用函数时,从函数名得到函数的起始地址,并执行函数代码。摘自《C程序设计(第五版)》-谭浩强,P265页。1 通过函数入口地址调用函数的例子#include "stdio.h"void test(int num){ printf("\n Using test function %d OK! \n", num原创 2021-01-12 14:37:01 · 2603 阅读 · 0 评论 -
程序运行中加载动态库,调用动态库函数
预备知识linux 系统在程序中使用dlopen、dlsym、dlclose、dlerror 显式的加载动态库,需要设置链接选项-ldl加载动态链接库,首先为共享库分配物理内存,然后在进程对应的页表项中建立虚拟页和物理页面之间的映射。你可以认为系统中存在一种引用计数机制, 每当一个进程加载了共享库(在该进程的页表中进行一次映射),引用计数加一;一个进程显式卸载(通过dlclose等)共享库或进程退出时,引用计数减 一,当减少到0时,系统卸载共享库(1)打开动态链接库:dlopen.原创 2021-01-07 09:49:34 · 1911 阅读 · 0 评论 -
终端模拟器&&常用快捷键
GNOME Terminal是GNOME桌面环境的默认终端仿真器。很多发行版,如RHEL、Fedora和CentOS,默认采用的都是GNOME桌面环境,因此GNOME Terminal自然也就是默认配备了。不过其他一些桌面环境,比如Ubuntu Unity,也采用GNOME Terminal作为默认的终端仿真软件包。Ubuntu 终端模拟器GNOMEGNOME终端常用快捷键Shift+Ctrl+C : 复制Shift+Ctrl+V: 粘贴Shi...原创 2020-12-24 11:23:58 · 1782 阅读 · 0 评论 -
linux C++ XML文件创建、读取和修改实例
0. XML文件可扩展标记语言,标准通用标记语言的子集,简称XML。是一种用于标记电子文件使其具有结构性的标记语言。在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。是Internet环境中跨平台的、依赖于内容的技术,也是当今处理分布式结构信息的有效工具。早在1998年,W3C.原创 2020-12-17 11:13:33 · 2315 阅读 · 0 评论 -
ubuntu 系统安装wps
1 wps 下载从此链接下载 wps deb 64位版本https://www.wps.cn/product/wpslinux2 wps 安装1)dpkg -i wps-office_11.1.0.9719_amd64.deb2) 将桌面的wps图片点击后,弹出wps 用户许可协议,点击确定即可使用3) wps ubuntu使用界面三、体验安装很简单、安装速度也很快,简单编辑文本也没有问题,体验蛮好。...原创 2020-12-04 22:24:25 · 1144 阅读 · 0 评论 -
linux 系统安装的几种方式
思来想去还是把用到不明白的地方,查清楚总结一下吧。linux操作系统的安装方式常用的linux安装方式有U盘启动盘安装、光驱安装、PXE远程安装等。1 U盘启动盘安装u盘启动盘安装是较为常见的linux系统安装方法,要求待安装的计算机BIOS固件支持u盘启动选项,同时提前做好待安装linux系统的u盘启动盘。详细步骤可以参见文章:https://blog.csdn.net/guhong888/article/details/828759432光驱安装一般是有正版系统安装光盘,在.原创 2020-12-04 00:02:22 · 9170 阅读 · 0 评论 -
linux 系统启动时间调优
目录背景Systemd结构概览系统引导性能分析操作系统启动过程分析1 system-analyze(内核载入开始)2 system-analyze blame3 systemctl disable优化开机时间4 关于systemd-analyze的补充5 dmesg查看系统启动(操作系统上电开始)参考文档背景 linux操作系统项目启动时间调优。Systemd结构概览让我们看一下Linux系统在使用systemd作为引导程序时的开...原创 2020-12-01 23:38:29 · 1216 阅读 · 0 评论 -
linux 内核模块 && 强制卸载
0 问题:某项目中,关于一种调用驱动设备程序,出现异常时,驱动设备无法正常退出(lsmod 显示驱动设备被占用无法rmmod 退出),也无法继续使用的问题。1 linux 模块内核模块是Linux内核向外部提供的一个插口,其全称为动态可加载内核模块(LoadableKernelModule,LKM),我们简称为模块。模块具有以下特点: 模块本身不被编译入内核映像,从而控制了内核的大小 模块一旦被加载,它就和内核中的其他部分一样 模块是具有...原创 2020-10-12 22:04:56 · 7378 阅读 · 5 评论 -
bochs 加载配置文件bochsrc.disk仅有命令行显示
用ubuntu 虚拟机联网下载bochs (默认版本2.6)学习《操作系统真象还原》配置完bochsrc.disk 文件后,某次再启动bochs,后无法显示如书中显示的文本框提示信息查找网上,没有看到什么解决方法,不知道是不是自己哪里配置有问题,如有高手,望留言告知~暴力解决方法,重新安装了bochs-2.6版本然后又恢复如书中所述的提示框信息~...原创 2020-09-20 21:14:47 · 2516 阅读 · 0 评论 -
g++ 链接 gcc 编译的动态库
一:gcc与g++比较编译c/c++代码的时候,有人用gcc,有人用g++,于是各种说法都来了,譬如c代码用gcc,而 c++代码用g++,或者说编译用gcc,链接用g++,一时也不知哪个说法正确,如果再遇上个extern "C",分歧就更多了,这里我想作个了结,毕竟知识的目的是令人更清醒,而不是更糊涂。误区一:gcc只能编译c代码,g++只能编译c++代码两者都可以,但是请注意:1.后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序;后缀为.cpp的,两者都会认为是c++程序,注.原创 2020-08-13 21:30:43 · 1855 阅读 · 0 评论 -
linux 中常用的进程控制类命令
一 查看进程命令 ps && top原文链接:https://blog.csdn.net/timchen525/article/details/76364706ps 和 top 命令常用来查看Linux系统进程相关信ps命令:可以查看进程的瞬间信息top命令:可以持续的监视进程的信息场景一:如何查看Linux系统中存在mysql、nginx、tomcat进程?方法一:输入命令:ps -ef|grep 相应的进程名称方法二:输入命令:ps aux | grep 相.转载 2020-06-19 16:12:51 · 212 阅读 · 0 评论 -
中标麒麟虚拟机与windows系统共享文件夹
环境中标麒麟4.0 + VMware Workstation 12 Pro + windows10;问题描述在主机(windows)和虚拟机之间建立共享文件夹;解决步骤step1:一是对主机进行配置,二是在虚拟机上安装VMware tool。具体步骤参考下面链接:https://blog.csdn.net/kai1001/article/details/79668327。如果是ubuntu或者centos等系统,到此就创建完共享文件夹了,在/mnt/hgfs目录下可以找到共享的.原创 2020-06-05 10:01:15 · 9203 阅读 · 1 评论 -
linux的环境配置.profile&&/etc/profile、.bashrc && /etc/bashrc
0 Linux的环境配置文件.bashrc.bashrc文件主要保存个人的一些个性化设置,如命令别名、路径等。也即在同一个服务器上,只对某个用户的个性化设置相关。它是一个隐藏文件,需要使用ls -a来查看。 .bash_history 记录之前输入的命令 .bash_logout 当你退出时执行的命令 .bash_profile 当你登入shell时执行 .bashrc 当你登入shell时执行 后两个的区别:'.bash_pr...原创 2020-05-19 16:49:16 · 779 阅读 · 0 评论 -
教你如何使用SPEC CPU2006
因为工作原因陆陆续续接触到SPEC的测试,由于此项测试相对门槛高一些,测试周期长,网上靠谱的资料不多,遂将自己的测试经验总结下来跟大家分享。本文只涉及到一些基本的测试知识,欢迎有经验的朋友补充,交流~0 工具介绍SPEC是标准性能评估公司(Standard Performance Evaluation Corporation)的简称。SPEC是由计算机厂商、系统集成商、大学、研究机构、咨询等多家公司组成的组织,这个组织的目标是建立、维护一套用于评估计算机系统的标准。在早些年,业界使用的是其.原创 2020-05-16 20:44:49 · 17345 阅读 · 18 评论 -
9张图11个概念 学习linux 内存管理
原文链接:https://mp.weixin.qq.com/s/6kNJnVd1ZTng7nQ8zLyJvA概念1 :虚拟地址即使是现代操作系统中,内存依然是计算机中很宝贵的资源,看看你电脑几个T固态硬盘,再看看内存大小就知道了。为了充分利用和管理系统内存资源,Linux采用虚拟内存管理技术,利用虚拟内存技术让每个进程都有4GB互不干涉的虚拟地址空间。进程初始化分配和操作的都是基...转载 2020-04-30 21:18:05 · 404 阅读 · 0 评论 -
linux 系统下的压力测试工具
因为项目需要,接触到了两款压力测试工具,对其进行总结和学习。1) LTP简介: LTP套件是由 Linux Test Project 所开发的一套系统测试套件。它基于系统资源的利用率统计开发了一个测试的组合,为系统提供足够的压力。 通过压力测试来判断系统的稳定性和可靠性。压力测试是一种破坏性的测试,即系统在非正常的、超负荷的条件下的运行情况 。用来评估在超越...原创 2020-04-29 23:44:55 · 4939 阅读 · 0 评论 -
文件来自未来的xxxxxs之后
背景这个问题一般是在脱机操作系统上才会遇到的;在脱机linux操作系统中,编译拷贝进来的文件,由于拷贝进来文件的时间戳与当前操作系统的时间戳不同,在执行make 编译过程中,有此警告信息。现象编译过程没有报错,仅提示“警告信息,可能会带来意想不到的后果”;修改之后的内容,包括添加打印信息都没有执行->修改之后的文件没有编译成功。由于忽略这个告警信息,在调试过程中可...原创 2020-04-22 12:23:06 · 210 阅读 · 0 评论 -
linux 常用的shell命令(待补充)
1 命令行日常快捷键CTRL + U -剪切光标前的内容CTRL + K -剪切光标至行末的内容CTRL + Y -粘贴CTRL + E -移动光标到行末CTRL + A -移动光标到行首ALT + F -跳向下一个空格ALT + B -跳回上一个空格Shift + Insert -向终端内粘贴文本2暂停并在后台运行命令CTRL + Z -暂停应用程序...原创 2020-04-10 23:43:59 · 120 阅读 · 0 评论 -
Linux需要掌握的知识(一)
1 数据流重定向重定向有5种方式,分别是: 输出重定向、输入重定向、错误重定向、追加重定向以及同时实现输出和错误的重定向。重定向就是使用文件代替标准输入、标准输出和标准错误输出。标准输入 (stdin):代码为 0 ,使用 < 或 << ;标准输出 (stdout):代码为 1 ,使用 > 或 >> ;标准错误输出(stde...原创 2020-04-05 11:42:53 · 388 阅读 · 1 评论 -
linux 下删除大量小文件的方法和效率
一 首先建立10万个文件新建文件夹,脚本创建小文件for i in $(seq 1 100000);do echo text >>$i.txt;done多种删除方式1)rm删除 rm-f*2)find删除 find ./ -type f -exec rm {} \; 解释:-type 按类型查找 例:find /boo...转载 2020-04-03 00:57:42 · 1072 阅读 · 1 评论 -
iperf2.0和iperf3比较以及影响udp丢包率的参数
文章背景:最近在做40G交换板的TCP带宽和UDP带宽、丢包率、抖动测试;发现iperf与iperf3版本不同对测试结果有较大影响;通过自己试验与网络查找资料有结论如下。第一部分:iperf与iperf3比较1)iperf3较iperf测试UDP丢包率和带宽,相同硬件条件下,iperf3测试带宽更高,但是存在严重丢包 iperf测试UDP带宽较小,但是不丢包。(x86...原创 2019-12-08 21:23:15 · 12243 阅读 · 1 评论