linux
文章平均质量分 51
王者级废铁
博客就是备忘录,这里主要记录一些学习的内容或者总结
展开
-
编译linux开发板的第 1 个驱动实验
为什么编译驱动程序之前要先编译内核?⚫ 驱动程序要用到内核文件:比如驱动程序中这样包含头文件:#include ,其中的 asm 是一个链接文件,指向 asm-arm 或 asm-mips,这需要先配置、编译内核才会生成asm 这个链接文件。⚫ 编译驱动时用的内核、开发板上运行到内核,要一致:开发板上运行到内核是出厂时烧录的,你编译驱动时用的内核是你自己编译的,这两个内核不一致时会导致一些问题。转载 2024-04-29 11:00:07 · 53 阅读 · 0 评论 -
ubuntu配置VMware 使用双网卡之NAT 网卡上网、桥接网络连接开发板
配置 VMware 使用双网卡VMWare 设置为使用双网卡是最方便的:NAT 网卡:Ubuntu 通过它上网,只要 Windows 能上网,Ubuntu 就能上网桥接网卡:Ubuntu 通过它跟开发板联通NAT,Network Address Translation,指网络地址转换。使用 NAT 网卡时,Ubuntu 要访问外网,是委托 Windows 发出数据包,Windows 接收到回应后再转发给 Ubuntu。外界看到的都是 Windows,看不到 Ubuntu。转载 2024-04-29 10:07:22 · 1011 阅读 · 0 评论 -
linux下服务器并发
如果需要和发起新的连接请求的客户端建立连接,那么就必须在服务器端通过一个循环调用accept()函数,另外已经和服务器建立连接的客户端需要和服务器通信,发送数据时的阻塞可以忽略,当接收不到数据时程序也会被阻塞,这时候就会非常矛盾,被accept()阻塞就无法通信,被read()阻塞就无法和客户端建立新连接。转载 2024-04-07 16:28:07 · 44 阅读 · 0 评论 -
ubuntu16.04安装vscode遇到的code 依赖于 libnss3 (>= 2:3.30)解决
ubuntu16.04安装vscode遇到的code 依赖于 libnss3 (>= 2:3.30);然而:系统中 libnss3:amd64 的版本为 2:3.28.4-0ubuntu0.16.04.14解决方法。一开始下载了最新版本的vscode,安装时出现了上面的错误状况,最新版本的依赖库版本过低的问题,于是下载之前的版本试了一下,成功安装。原创 2023-10-16 13:53:58 · 3203 阅读 · 4 评论 -
linux查看进程绑定cpu核是否成功
可以看到选项被选中了,然后在键盘按下esc按键退出,此时可以看到P属性了,查看此时进程是否绑定成功cpu核心,P属性代表的就是进程绑定的核心。运行top后,按 " f "键进入top配置界面,然后按上下键选择P选项,此时可以看到P选项前面没有*号,代表没有配置。然后查看是否有P属性,这个属性用来查看进程绑定的cpu核。运行top命令,可以看到进程以及进程cpu占有率。然后点击在键盘按下“d”按键。这里没有看到cpu占用核心。原创 2023-08-11 19:16:06 · 970 阅读 · 0 评论 -
进程绑定中断CPU核和中断号以及设置线程优先级
绑定要使用中断的CPU核,以及终端号。原创 2023-08-11 11:29:32 · 350 阅读 · 0 评论 -
linux自启动程序
嵌入式linux下有软件需要自启动,只需要在/etc/init.d/rcS末尾添加所要启动的程序即可,开机就会自动运行。vi /etc/init.d/rcS在文件末尾添加。原创 2023-08-10 16:18:00 · 270 阅读 · 0 评论 -
嵌入式linux格式化以及挂载sata或msata
此时可以看到sata的格式为win95 FAT32,这是windows上的一种格式,不适用于linux,所以需要格式化,若不格式化,挂载时就会报错并挂载不上。无奈只能在windows使用diskGenius软件将硬盘格式化为ext4。但是不知道为什么格式化后,硬盘还是显示FAT32的格式。命令查看整体磁盘挂载情况,这时可以看到硬盘已成功挂载。在板子上运行以下linux自带的格式化命令。一、查看嵌入式linux系统上的磁盘空间。命令查看,可以看到硬盘的格式为linux。将硬盘格式化为ext4后。原创 2023-06-09 16:21:16 · 854 阅读 · 0 评论 -
linux下C程序查看内存剩余大小
嵌入式linux中很多内存资源都比较小,所以很多程序中在malloc时就需要提前知道内存剩余的大小。下面是一种调用 sysinfo接口来实现。转载 2023-06-06 18:33:58 · 450 阅读 · 0 评论 -
linux下绑定任务到特定的CPU
如果要设置已存在的线程的亲和性,就可以考虑使用pthread_setaffinity_np,尽管pthread_setaffinity_np是不可移植的,是gnu独有的。与使用sched_setaffinity设置线程亲和性相比,使用pthread_setaffinity_np的另一个好处就是,可以在线程外设置任一线程的亲和性(只要知道pthread_t即可),而sched_setaffinity的gettid,需要在线程函数内调用。注:np的意思为不可移植,即在非gnu的系统上,应该是没有这个接口的。转载 2023-06-06 09:44:13 · 1768 阅读 · 0 评论 -
uboot下的mw写内存和md显示内存命令以及nand命令
注意,网络地址环境变量的设置要根据自己的实际情况,确保主机和开发板的 IP地址在同一个网段内,比如我现在的开发板和电脑都在 192.168.0.1 这个网段内,所以设置开发板的 IP 地址为 192.168.0.10,我的 windows的 主机的地址为 192.168.0.40,因此 serverip 就是192.168.0.40。b\w\l的意思同上,address是要写入内存的地址,value是要写入的值,count是从address开始要写入多少个数,这些都是16进制数。原创 2023-05-31 13:47:50 · 2283 阅读 · 0 评论 -
makefile详解
一、makefile概念作用:假如有三个C文件,比如说有foo.c, bar.c, main.c三个C文件,要编译成一个app,会怎么做呢?先将三个C文件都编译出来,然后再链接成一个可执行文件,但是当文件特别多的情况下,一个一个去编译,然后再去链接起来吗?这时可能会想创建一个shell文件,将上面的步骤放进去,写成一个build.sh,每次编译你只要执行这个脚本问题就解决了。转载 2023-05-30 14:06:56 · 5573 阅读 · 0 评论 -
linux驱动和应用的数据交互ioctl函数和copy_from_user、copy_to_user
驱动程序运行在内核空间中,给出的地址也是在内核空间中的地址,运行在用户空间下的用户程序即使拿到这个地址,也不能访问内核空间。除此之外,还有put_user()函数和get_usr()函数,在用户层和内核层拷贝单个数据时,比如某个int型变量,则优先使用put_user()和get_user()函数;(2)在拷贝大量数据时使用copy_to_user()和copy_from_user()函数,拷贝单个数据时,比如某个int型变量,则优先使用put_user()和get_user()函数;原创 2023-05-29 16:54:57 · 2493 阅读 · 2 评论 -
linux下socket编程处理TCP粘包
关于数据包的包头大小可以根据自己的实际需求进行设定,这里没有啥特殊需求,因此规定包头的固定大小为4个字节,用于存储当前数据块的总字节数。这样,在进行套接字通信的时候通过调用封装的 sendMsg() 和 recvMsg() 就可以发送和接收带数据头的数据包了,而且完美地解决了粘包的问题。1、首先接收 4 字节数据,并将其从网络字节序转换为主机字节序,这样就得到了即将要接收的数据的总长度。3、将待发送的数据拷贝到包头后边的地址空间中,将完整的数据包发送出去(字符串没有字节序问题)5、释放存储数据的堆内存。转载 2023-04-18 17:46:55 · 221 阅读 · 0 评论 -
Linux下SOCKET编程
协议族决定了socket的地址类型,在通信中必须采用对应的地址,如AF_INET决定了要用ipv4地址(32位的)与端口号(16位的)的组合、AF_UNIX决定了要用一个绝对路径名作为地址。socket()函数创建的socket默认是一个主动类型的,listen函数将socket变为被动类型的,等待客户的连接请求。监听套接字: 监听套接字正如accept的参数sockfd,它是监听套接字,在调用listen函数之后,是服务器开始调用socket()函数生成的,称为监听socket描述字(监听套接字)原创 2023-04-18 15:34:25 · 2771 阅读 · 0 评论 -
ubuntu20下Qt5.14.2+OpenCV(含Contrib)-4.5.0环境搭建
Qt若要能处理图片和视频,就必须安装OpenCV,而OpenCV中很多的高级功能如人脸识别等都包含在Contrib扩展模块中,需要将Contrib与OpenCV一起联合编译,目前所用这两个版本都是4.5.0版。原创 2023-02-11 11:12:46 · 2093 阅读 · 1 评论 -
使用公网IP的ubuntu移植QT运行用QT编写的服务器
下面是ubuntu下移植Qt:将编好的可执行程序放在另一台主机,然后将Qt的库转移到这台主机上来,设置环境变量后,重启,可以运行qt可执行程序。原创 2023-02-10 11:08:16 · 171 阅读 · 0 评论 -
Qt通过QStorageInfo获取磁盘大小,linux下可根据路径获取挂接磁盘的大小,而非获取所有磁盘大小的总和
上面linux获取磁盘大小是获取的根目录下的磁盘大小,此时挂载的U盘等也会计算在内,如果只计算某路径所在的磁盘大小,就需要获取硬盘信息的statfs结构,通过statfs结构的信息计算出路径所在的磁盘使用情况。contains是QString中查看是否含有子字符串的方法,storage.rootPath()是获取这个盘符的字符串,这样就可以检测出dir属于哪个盘符。QStorageInfo类提供了系统当前挂载的存储和驱动器的相关信息,包括它们的空间,挂载点,标签名,文件系统名。这个是获取盘符的所有信息。原创 2022-06-13 10:01:00 · 1083 阅读 · 0 评论 -
linux给用户添加root权限的方法
1、添加用户,首先用adduser命令添加一个普通用户,命令如下: #adduser tommy //添加一个名为tommy的用户 #passwd tommy //修改密码 Changing password fo …修改完毕,现在可以用tommy帐号登录,然后用命令 su - ,即可获得root权限进行操作。修改完毕,现在可以用tommy帐号登录,然后用命令 su - ,即可获得root权限进行操作。方法一: 修改 /etc/sudoers 文件,找到下面一行,把前面的注释(#)去掉。转载 2023-01-05 10:50:36 · 16239 阅读 · 4 评论 -
windows添加网络位置为linux的Samba服务不能新建文件的权限问题解决办法
把 SELINUX=enforcing 注释掉:#SELINUX=enforcing ,再次在windows下创建新的文件,能够创建成功了。然后新加一行为:SELINUX=disabled。原创 2022-10-31 15:55:18 · 959 阅读 · 0 评论 -
linux下应用开发之按键信号结束线程
linux应用层经常使用线程,在线程中while循环等待,或者应用中也会有while,那么如果自己写demo或者使用命令行运行,经常用到使用Ctrl + C键结束应用,比如main函数中加入signal信号处理,Stop就是信号处理回调函数。原创 2022-08-22 11:08:33 · 259 阅读 · 0 评论 -
readline命令行编辑程序和ncurses
readline一个命令行编辑程序库,在此主要用于一些demo的验证,运行demo启动后,可以通过使用readlin来获取终端输入的命令,然后程序中可以根据命令进行一系列的逻辑操作原创 2022-07-11 15:50:42 · 377 阅读 · 0 评论 -
Ubuntu系统下 .7z 文件压缩解压命令
Ubuntu系统下 .7z 文件压缩解压命令原创 2022-07-09 16:53:28 · 9174 阅读 · 0 评论 -
ubuntu虚拟机与windows系统间不能复制粘贴
ubuntu虚拟机与windows系统间不能复制粘贴原创 2022-07-01 11:09:38 · 4378 阅读 · 4 评论 -
ubuntu下移植Qt软件
ubuntu下移植Qt软件原创 2022-06-24 14:49:19 · 188 阅读 · 0 评论 -
linux下多线程服务器编程
linux多线程服务器编程原创 2022-06-07 14:56:54 · 626 阅读 · 0 评论 -
linux下查看进程链接了哪些库
(1)ps -A 或者ps -e在终端中输入ps -A或者ps -e命令,可以列出所有进程。如下图,ps -A和ps -e功能是一样的,都是简单列出了以下信息:1.PID:所有进程的进程号2.TTY:该进程在哪个终端上运行,表示未知或不需要终端3.TIME:该进程占用CPU时间4.COMMAND:启动该进程的命令名称(2)查看进程都链接了哪些库,用于检测库的对错sudo lsof -p 2818...原创 2022-05-27 09:38:49 · 2478 阅读 · 0 评论 -
Qt的.desktop文件运行后对文件没有写权限,解决QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to ‘/tmp/runtime-roo
在银河麒麟上直接运行qt制成的.desktop程序,会有一个致命的问题,运行后可以显示界面,但是没有写文件的权限,无法写入数据库,只能读,网络拉流后线程保存MP4文件直接崩掉,所以要想办法使用root权限启动程序,但是使用桌面图标启动,不能用在命令行输入sudo,于是修改了.desktop文件:Exec=sudo /usr/local/shixun/wapp.shwapp.sh使用pkexec开启root权限运行软件,将下面行写入wapp.shpkexec /usr/local/shixun/w原创 2022-05-17 15:09:07 · 3293 阅读 · 0 评论 -
linux下将Qt程序打包成deb文件,发布、安装及使用,ubuntu和银河麒麟下可用
本次测试为在ubuntu打包程序为deb文件包,然后再Ubuntu和银河麒麟下安装测试,均可使用1、Qt下Release模式编译工程文件,文件名为wapp2、创建如下基本目录结构本目录结构在~目录下创建wapp DEBIAN // 存放control文件,用于记录安装包相关信息的配置文件 usr local lib //存放程序所需的链接库 wapp // 存放程序文件(建议与原创 2022-05-16 11:46:17 · 6246 阅读 · 19 评论 -
ffmpeg获取文件时长
/** 获取MP4文件时长,ffmpeg库实现 */int record::getMP4_duration_ffmpeg(const char *filename,long long *seconds){ if(filename == NULL) { printf("getMp4_duration_filename erro"); return -1; } AVFormatContext *ifmt_ctx = NULL;原创 2022-05-04 10:47:36 · 2071 阅读 · 0 评论 -
windows添加ubuntu的网络位置
原创 2022-04-21 09:34:00 · 533 阅读 · 0 评论 -
Qt中使用C++中的std里的线程
加入新的类,基类一定要选择QObject使用C++中的threadsave_av.cpp#include "save_av.h"using namespace std; //加入这个就可以使用C++里面的class thread//录制音视频void RecordVideoAudio( int num){}save_av::save_av(QObject *parent) : QObject(parent){}void save_av::start(int num){ c原创 2022-04-20 16:20:11 · 1182 阅读 · 0 评论 -
Ubuntu下NFS安装配置
Ubuntu下NFS Server安装配置1、安装nfs-server apt-get install nfs-kernel-server关闭防火墙sudo ufw disable2、建立nfs专用文件夹,这个文件夹将在第3不配置成为与客户端共享的文件夹 mkdir /home/nfs3、配置nfs vi /etc/exports配置如下:/home/nfs/ *(async,insecure,no_root_squash,no_subtree_check,rw)注:nfs允原创 2022-04-20 11:39:34 · 5914 阅读 · 0 评论 -
linux下网卡多IP静态IP
修改/etc/network/interfaces# interfaces(5) file used by ifup(8) and ifdown(8)auto loiface lo inet loopbackauto eth0iface eth0 inet staticaddress 192.168.0.36netmask 255.255.255.0auto eth0:1iface eth0:1 inet staticaddress 192.168.10.46netmask 255原创 2022-04-15 17:38:19 · 263 阅读 · 0 评论