linux与虚拟机
dujunqiu
单片机,linux的嵌入式开发,会用一点python脚本来进行开发辅助工作
展开
-
libserailport交叉编译适配说明
github路径自己的gitee路径libserialport 是一个跨平台的串口通信库,由 sigrok 项目开发。它简洁、易用,并且支持多种操作系统。libserialport 支持阻塞和非阻塞模式,可以根据你的需求选择适当的模式。阻塞模式下,操作会等待完成或超时,而非阻塞模式下,操作会立即返回。通过使用 sp_blocking_* 和 sp_nonblocking_* 函数,你可以轻松实现这两种模式。原创 2024-09-20 09:06:07 · 405 阅读 · 0 评论 -
linux进程脚本开机自启动异常,手动执行正常问题分析
其它的也有可能比如权限问题,依赖文件问题都有可能;最主要是根据当前脚本的内容,寻找依赖项,再来确认解决方法;确认进程或脚本是否依赖其它.so库;可能是开机自启动环境变量是系统自带的,没有加载用户自定义的路径;请确认当前进程或脚本是否依赖其它基础功能或自定义功能,可能开机启动时候,部分功能还未加载完成;可通过在脚本中打印 环境变量对比查看。原创 2024-08-01 20:58:33 · 260 阅读 · 0 评论 -
Linux上WIFI作为发射端(AP端),如何查看已连接的设备信息
通过如下两种方式只能获取MAC地址信息,需要确认当前环境设备的MAC信息,才能知道是谁连接上了;或者查看自己的手机或电脑MAC地址信息,确认是否是自己连接的。iw dev wlan1 station dump # 获取station 的统计信息;hostapd_cli 是一款用作无线 AP 功能的客户端程序原创 2024-08-01 20:58:08 · 477 阅读 · 0 评论 -
date获取时间并提取相关信息
date 获取时间戳,从 1970年1月1日0点0分0秒到现在历经的秒数。date 提取年月日信息,需要单独一个数据,使用一个%date 提取时分秒信息,需要单独一个数据,使用一个%date 显示时间是上午 AM 还是下午 PM。查询 date 指令,里面描述的非常详细。date 获取当前时区信息。详细使用信息,可以参考。date原始数据输出。原创 2024-07-12 15:15:54 · 213 阅读 · 0 评论 -
linux系统中,pwd获取当前路径,dirname获取上一层路径;不使用 ../获取上一层路径
在实际项目中,我们通常可以使用 pwd 来获取当前路径,但是如果需要获取上一层路径,有不想使用 …/ 的方式,可以尝试使用 dirname指令。dirname命令去除文件名中的非目录部分,仅显示与目录有关的内容。dirname命令读取指定路径名保留最后一个/及其后面的字符,删除其他部分,并写结果到标准输出;可使用 dirname --help 查看更多帮助由此可见,当使用 pwd 获取当前路径之后,也可以使用其它的分词或过滤方式,来获取我们想要的路径;原创 2024-06-19 22:22:38 · 302 阅读 · 0 评论 -
error: ‘return’ with no value, in function returning non-void [-Werror]
解释:返回没有值,但是函数返回时非空的;处理方法:1:关闭 warning转error的编译选项,"-Wall -Werror";2:根据函数定义,给函数设置对应返回值;原创 2024-05-29 08:36:42 · 335 阅读 · 0 评论 -
linux下将WIFI模块作为STA客户端连接路由器WIFI的操作
2:确认 Linux设备支持 iw, wpa_supplicant, udhcpc 等指令, 可以先搜索一下这三个指令的用法,也可以 “iw --help” 来查看帮助信息。WIFI连接之后,还要设置一下 DHCP, 不然自带的 ip(ifconfig查看)可能和WIFI的IP不匹配,还是无法上网;这里修改的是系统配置的账号密码,也可以通过 “add_network” 手动输入;扫描当前网络条件下,可以接收到哪些WIFI信号,就是手机连接的WIFI名称。再次查看一下路由信息,已经可以获取到 网关的信息;原创 2024-05-23 17:18:20 · 655 阅读 · 0 评论 -
.a .so .bin 文件格式分析--文件格式是32位还是64位,数据是大端还是小端,运行在 arm 上还是 x86上
可通过readelf指令,分析文.a .so .bin 文件是在什么系统上编译的,文件格式是32位还是64位,数据是大端还是小端,运行在 arm 上还是 x86上。通过 readelf -a libbrd.a 读取文件的格式内容原创 2024-03-09 18:19:51 · 569 阅读 · 0 评论 -
查找库文件中是否包含某个函数,库文件是否包含某个全局变量,库文件是否包含某个文件
用法:需要结合 grep 指令;可以把库文件直接文本打开看下,有字符串的内容,都是可以搜到的。扩展:另外还有 objdump 和 nm 指令也可以查看。原创 2024-02-23 09:32:00 · 485 阅读 · 0 评论 -
sh脚本 kill一次杀掉多个进程
通过 pgrep -f 指令来获取进程的pid之后,赋值给变量app;然后使用 kill -9 来结束进程;注意也可以使用 pidof 指令,来获取进程 pid。原创 2024-01-30 09:10:34 · 498 阅读 · 0 评论 -
undefined reference to symbol ‘sem_close@@GLIBC_2.2.5‘
4:增加了依赖库之后,还要注意库的先后关系;先后关系不一致,也可能导致报错;3:所以编译的时候,需要增加 -lpthread -lrt 编译选项;2:需要依赖 libpthread和librt 库;1:sem_close 为信号量相关操作;原创 2023-12-23 09:55:02 · 515 阅读 · 0 评论 -
error: too many arguments to function ‘system‘
system功能说明:把 command 指定的命令名称或程序名称传给要被命令处理器执行的主机环境,并在命令完成后返回。如果发生错误,则返回值为 -1;报错原因:system函数里面出现了太多参数。用法2:利用数组来组合存储想要执行的命令。用法1:直接在参数里面填写字符串。原创 2023-12-16 09:44:01 · 985 阅读 · 0 评论 -
linux查看当前路径的所有文件大小;linux查看当前文件夹属于什么文件系统
1:指令查看当前路径所有文件内存空间大小;这样可以方便查询每个文件大小情况,根据需要进行删除。2:查看linux文件系统分布。查看当前路径属于什么文件系统。df -h df -T原创 2023-12-09 09:40:56 · 671 阅读 · 0 评论 -
报了一堆 undefined reference to `__cyg_profile_func_enter‘,`__cyg_profile_func_exit‘
在一个新的linux环境下编译程序,编译.a的时候正常;编译.so和app的时候异常,报了一堆 undefined reference to `__cyg_profile_func。。。错误,检查代码的编译工具链和依赖库路径,未发现异常;因为使用的makefile,在别的linux环境下验证过是正常的,怀疑是芯片的编译工具链差异导致;最终排查到是 CFLAGS 里面的 “-finstrument-functions” 编译选项不支持,去掉就好了;原创 2023-11-25 14:32:54 · 713 阅读 · 0 评论 -
git拉代码 使用SSH克隆,配置代理
正常我们很容易配置 http和https 的代理来克隆代码,但是 使用SSH克隆 方式的代理用的比较少。which nc原创 2023-11-22 09:38:02 · 2133 阅读 · 0 评论 -
shell脚本执行传递参数注意事项,$1参数消失
1:执行命名 ./test.sh dev, 通过$1 获取的参数,需要及时分配变量保存;2:如果需要在后续的函数中使用 $1, 需要用 方法2,继续将 $1 当做参数传递。原创 2023-11-01 09:19:13 · 1451 阅读 · 4 评论 -
linux下alias别名设置说明
我们想将某个可执行程序,命名为其它名称;比如为python指定对应的python版本给python39指定python版本。查看已设置的 alias别名;取消alias别名设置原创 2023-10-29 10:19:08 · 400 阅读 · 0 评论 -
error: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its
错误:“strncpy”输出可能会被截断,从长度为254的字符串复制100字节。1:在编译选项里面去掉 "-Werror -Wall", 忽略告警。所指向的字符串复制到。2:使用memcpy函数。error: ‘strncpy’ output may be truncated copying 100 bytes from a string of length 254原创 2023-09-10 16:39:48 · 2314 阅读 · 0 评论 -
error: writing 4 bytes into a region of size 1 [-Werror-stringop-overflow]
错误含义:将4byte写入大小为1byte的区域;自己检查多次之后,发现代码写法并没有问题,那么就很有可能是 结构体对齐 的问题,导致实际使用内存区域和结构体命名内存区域不一致;1:去掉 makefile 里面的编译选项 “-Werror -Wall”,这样会忽略该警告;2:修改结构体对齐顺序原创 2023-09-02 16:22:54 · 1123 阅读 · 0 评论 -
pthread创建单线程和多线程实例,并且多线程循环执行
下面代码示例是使用C语言编写的pthread多线程执行,注意使用 编译指令 gcc -o test main.c -lpthread。原创 2023-08-24 23:48:39 · 227 阅读 · 0 评论 -
VMware Workstation下载不同的版本
4:大版本选择之后,就可以选择对应的小版本。各位再根据自己的选择进行下载就好了。2:拉倒下面去选择对应的下载内容。原创 2023-08-06 09:41:48 · 356 阅读 · 0 评论 -
makefile报错:linker input file unused because linking not done
如上所示,在编译时候报错“linker input file unused because linking not done”;虽然提示编译成功了,但是实际生成的文件是空的,没有包含对应代码内容;出现这个的原因就是因为 .o 文件没有生成,可以再编译的时候注意观察一下有没有生成对应的 .o文件;然后进一步检查一下 gcc 的编译指令是否配置正确;大概率就是 gcc 的编译指令没对上导致的;原创 2023-06-27 09:09:11 · 4567 阅读 · 0 评论 -
shell脚本批量执行chmod指令
在实际使用linux指令的时候,有时候我们希望大量重复性的指令能够通过脚本去完成,不需要每一个都单独通过指令操作; 下面这个里程,通过 for 循环 和 ${x[@]} 取数据,来批量进行 chmod 的指令设置 ;如果有其它类似的功能,也可以通过这个脚本来实现 # 先通过 find / -name debug.sh 查找到所有的debug.sh 路径# 将查找的路径复制到下面的脚本目录来;遍历每一个路径,进行chmod设置;注意 ${x[@]} 语法的使用原创 2023-05-24 21:49:40 · 515 阅读 · 0 评论 -
undefined reference to `__cyg_profile_func_enter‘
在linux下,使用makefile编译源文件的时候,发现报如下错误 "undefined reference to `__cyg_profile_func_enter'" ;根据报错去查找对应行的时候,发现报错行号在 { 这里,很是奇怪;而且搜索代码,也搜索不到 相关内容产生这个报错的原因,是因为我们在编译选项里面增加了 -finstrument-functions,该选项可以增加对应的debug信息处理这个报错的方式,就是不用 debug 方法来编译;或者 在 DEBUG_FLAGS 去原创 2023-05-23 20:55:31 · 395 阅读 · 1 评论 -
cmd指令无法从C盘切到D盘或E盘
在windos下使用cd指令的时候,发现可以在当前磁盘切换,不能跨磁盘切换,如下所示。直接使用cd 指令无法切换;还是返回当前路径;2:切换工作磁盘,其命令形式是 [盘符]冒号,比如 “E:”1:cd命令的功能是:在同一个磁盘下切换不同的工作路径;3:“cd /d xxx” 表示直接转换到后面的路径;原创 2023-05-05 22:01:36 · 4847 阅读 · 1 评论 -
shell脚本使用 curl 获取服务器目录的最新文件
curl: (3) URL using bad/illegal format or missing URL: 路径不对,检查路径是否正确,不要包含特殊字符,检查是否有空格;User user_name is not permitted to deploy: 当前账号没有访问权限,需要开通对应权限;原创 2022-09-05 19:48:38 · 1852 阅读 · 0 评论 -
linux shell常用指令
linux shell常用指令原创 2022-09-05 15:24:31 · 227 阅读 · 1 评论 -
将虚拟机的文件,共享至主机
可以通过安装 samba ,来实现共享的效果具体的方法,这个博主说的很详细了 ,实测可用Ubuntu 安装Samba服务器及配置转载 2022-01-25 13:47:27 · 162 阅读 · 0 评论 -
VMware虚拟机如何修改登录密码
1:登录虚拟机之后,搜索“用户”2: 点击 添加或删除用户及更改密码3:进入之后,就可以修改密码啦原创 2021-07-10 10:01:02 · 11519 阅读 · 0 评论