Linux
caz28
C是俺吃饭的家伙,C++也偶尔用用,Python是我最喜欢用的脚本。
本人一直从事嵌入式开发,喜欢尝试新鲜技术,希望与热爱编程的朋友共同交流进步。
展开
-
rpmbuild spec文件如何排除一些文件
spec文件在使用中还发现一个问题,#并不能注释掉%开头的行,不需要的%开头的东西,直接删掉,否则用#注释掉,还会有各种问题。因为exclude应该跟defattr一样是files下的一个命令,上面那样是没有用的。用rpmbuild打包时,有些文件是不需要打包到rpm包里的,这时需要修改spec文件。原创 2024-08-28 15:01:07 · 244 阅读 · 0 评论 -
vscode运行已编译好的程序
假设我有一个项目,已经编译好了,需要调试,用gdb命令行调试不熟悉,还是用vscode来调试比较好。关键点:"preLaunchTask": "",这个是空的,就不会去编译了,直接运行。这个.env会设置环境变量。原创 2024-08-25 10:12:54 · 307 阅读 · 0 评论 -
Makefile:87: *** 多个目标匹配。 停止。
我是在Linux上编译,后来发现,这个目录在windows下编译过,下面目录里都有Makefile,Makefile.Debug,Makefile.Release等文件。qmake生成的Makefile完全没有问题。根据网上搜索结果,1.回车问题。2.空格、TAB问题。删除了这些文件后,再qmake,make,就通了。make时出现上面的多个目标匹配问题。原创 2024-08-15 20:38:24 · 199 阅读 · 0 评论 -
scp命令的使用
scp命令是secure copy的缩写,用于在Linux下进行远程文件拷贝,windows一般也有该命令。在Windows和Linux之间传文件,最简单的是共享目录,如果不能使用共享目录,可以使用scp命令, 一般Windows和Linux都支持。这个是把当前目录的123.txt文件,copy到192.168.0.100机器的/home/user/目录下。会让你输入user的密码。这个是把刚才那个文件从100的机器再copy下来,放到d:\xxx\目录下。也需要输入user的密码。上面是从cmd执行的。原创 2024-08-08 14:37:32 · 558 阅读 · 0 评论 -
CentOS7安装最新版本git
make时,doc和info是没有make成功的,因为前面有软件没装。但不影响git编译使用。CentOS7上的git是1.8.3.1,比较老,使用体验不好。下载源码来升级一下。安装后,git变为2.43.0,显示log更好看了。因为CentOS7.9很老了,有很多软件找不到。第四行,docbook没有安装,找不到这个的。第二行docbook2X没有找到。第三行getopt没有找到。原创 2023-12-05 16:23:20 · 613 阅读 · 0 评论 -
CentOS配置本地源
把上面的"mount -t iso9660 -o loop /mnt/iso/CentOS-7-x86_64-Everything-2009.iso /mnt/cdrom/"添加到最后。2.把相应版本的Everything的iso复制到机器上。然后copy到刚才iso目录。centos7的Everything有10G多,这个复制很费时间。然后可以安装大多数软件了,没有的软件可以在安装编译环境后,下载源码编译。原创 2023-11-29 18:27:23 · 598 阅读 · 0 评论 -
centos用户相关命令
这两个命令都行,如果已经添加了会提示已经存在。如果不加-r,就不删除用户文件。原创 2023-11-29 17:44:53 · 395 阅读 · 0 评论 -
Ubuntu定时执行任务
运行后,会发现,打开的是一个新的文件,前面普通用户权限写的任务不在这个文件。上面的几个都是不需要root权限的,如果运行的任务需要root权限怎么办?如果显示“no crontab for xxx” 说明没有启动cron。cron一个Linux定时执行工具,可以定时执行一些任务。然后就跟上面一样,添加需要root权限的任务。示例:每天8点,执行test.sh.示例:每5分钟,写一下log.示例:每天2点重启机器.这样就启动cron了。原创 2023-10-31 19:58:54 · 2073 阅读 · 0 评论 -
VMware虚拟机设置共享文件夹丢失问题
最近在用VMware,装了几个虚拟机后,发现第一次设置好共享文件夹,是可以用的,虚拟机里/mnt/hgfs/目录下有共享文件夹挂载。关闭虚拟机,再打开,就没有了,虚拟机设置里还有共享文件夹 的设置,删除了,再设置也没有用。CentOS,Ubuntu,麒麟等操作系统都试过,都有这个问题。我用的VMware是官网下的免费版,不知道付费版本是不是这个问题。在网上搜,发现应该是VMware Tools不能自动挂载共享文件夹问题。以后每次开机都能加载了。原创 2023-08-01 21:53:18 · 1152 阅读 · 1 评论 -
Linux下打包deb
先处理依赖,因为一个可执行文件依赖很多动态库,动态库又依赖很多动态库,所以只拷贝可执行文件不行,需要把这一系列依赖文件都找到,并且可执行文件和动态库运行时找其他文件的路径编译完一般是绝对路径,需要改为相对路径才能在改变位置后也能用。3.建立一个空目录,起名Project,作为工作目录,在工作目录里再建一个目录,起名ABC,这个第二级的目录才是我们linuxdeployqt用的目录,复制可执行文件到这个目录里。6.使用显式加载的动态库,先不要copy过来,因为依赖分析也会分析这些库,没有必要。原创 2023-07-19 11:18:36 · 1145 阅读 · 2 评论 -
列出make中的所有目标
用下面命令可以列出make中的所有目标,测试可用。原创 2023-07-17 14:47:20 · 626 阅读 · 1 评论 -
shell脚本里相对路径转绝对路径
一个shell脚本A,要调用另一个脚本B,参数需要绝对路径,因为调用的脚本里有目录进出操作。但如果脚本A里,调用时写成绝对路径,父目录变化时,就需要手工修改脚本。通过上面的操作,就得到一个相对当前路径的绝对路径。原创 2023-07-11 20:16:06 · 1140 阅读 · 0 评论 -
Ubuntu下编译VTK
到VTK源码的build目录(这个是第5步自己建的目录),打开终端,输入make,就可以编译了。5.打开cmake-gui,设置源码路径,编译输出路径,在源码里建一个build目录,用于存放输出。9.有红色不要紧,毕竟这些Qt目录都找到了,再次点击Configure,这次没有红色了。编译会有点小错误,是某个Qt头文件没有包含,大概两三个文件需要修改,改了就可以编译过了。6.选择QT,Rendering,StandAlone,点击Configure。1.先安装QT,不知道不装行不行,我们项目需要。原创 2023-06-30 00:44:44 · 1303 阅读 · 1 评论 -
libiconv库转换字符串出现BOM问题
使用iconv转换字符编码,经常出现转出的字符串带BOM头的问题。经过测试,发现unicode编码用“utf-32”或“utf-16”,转出或转入,得到的字符串有BOM,而用“utf-32le”、“utf-32be”、“utf-16le”、“utf-16be”这样的,就不会有BOM。所以需要明确告知iconv,编码的endian,否则转出来的字符串带BOM.原创 2023-06-29 23:17:30 · 220 阅读 · 0 评论 -
cmake在linux上实现PRE_BUILD功能
同一个cmake文件,在VS上是可以实现PRE_BUILD功能的,在linux上编译则没有执行到,不起作用。修改CMakeLists.txt后,下面的实现,可以linux编译时也能执行到。原理就是通过两次string替换,把文件名里的分隔符替换成下划线,用文件名做custom target,然后添加dependencies,这个temp_target就会执行到了。之所以用文件名做custom target,是因为这段在一个function里,会多次调用,不能用固定的target名字。原创 2023-06-27 23:57:46 · 354 阅读 · 0 评论 -
如何用 SSH 登录 Kindle 系统
ssh登录kindle原创 2022-12-04 01:01:26 · 1772 阅读 · 0 评论 -
WSL安装devkitPro
WSL安装devkitPro原创 2022-11-29 20:11:05 · 771 阅读 · 0 评论 -
wsl1与wsl2切换
如果已经在windows上装过linux,执行:C:\WINDOWS\system32>wsl -l -v NAME STATE VERSION* Ubuntu Running 1如果是这样的,说明是wsl1,只需要:wsl --set-version Ubuntu 2就可以切换为wsl2,需要几分钟。用下面命令可以切换回wsl1:wsl --set-version Ubuntu 1...原创 2022-02-09 08:14:45 · 12355 阅读 · 0 评论 -
命令行查看Ubuntu版本号
很多情况下,我们只能在命令行下操作,下面是命令行查看Ubuntu版本号:1.lsb_release2.cat /etc/issue3.cat /etc/os-release原创 2022-02-09 08:06:29 · 5379 阅读 · 0 评论 -
Linux的常用压缩软件压缩测试
测试一下Linux的常用压缩软件,压缩一个1.1G的tar包,用的都是最大压缩率。测试脚本:source_file=linux-5.15.5.tartime zip -9 $source_file.zip $source_filetime gzip -k9 $source_filetime xz -zk9 $source_filetime bzip2 -k9 $source_file测试结果:real 1m8.055suser 1m7.456ssys 0m0...原创 2021-11-30 19:52:34 · 825 阅读 · 0 评论 -
Ubuntu查询包依赖关系
sudo apt-cache depends xxx查询软件包的依赖关系。看看xxx依赖哪些包。sudo apt-cache rdepends xxx查询软件包的反向依赖关系。看看谁依赖xxx。原创 2021-10-21 17:07:03 · 913 阅读 · 0 评论 -
Linux cache对文件读取性能的影响
遇到一个奇怪的问题,我们的程序有时候会很慢,但无法重现,只是偶尔很慢。后来发现是linux的文件cache引起的。linux第一次读一个文件,是从磁盘读的,速度会比较慢,后面再读,只要这个文件还在系统的cache里就会很快。我们读的磁盘是nas的,2.3GB的文件,第一次无cache,读取平均73.2s,而后的读取就有cache了,读取平均18.7s。有cache后读取时间只有无cache读取的1/4多点。但如果我们读的是ssd的盘,没有cache也可以很快,同样上面的2.3GB文件,无cache读取原创 2021-08-12 15:11:55 · 842 阅读 · 0 评论 -
command not found: shopt 问题
新建的用户,发现执行/etc/bash.bashrc提示command not found: shopt.原因:新建的用户,shell是dash,改为bash,问题就解决了。简单方法:修改/etc/passwd,在对应用户名的用户主目录后面,添加:/bin/bash原创 2021-07-15 18:45:29 · 5100 阅读 · 0 评论 -
Ubuntu 16.04 搭建ftp服务器
sudo apt-get install vsftpd网上说的修改配置文件,原创 2021-06-06 01:11:43 · 272 阅读 · 0 评论 -
boost编译
tar -xzvf boost_1_67_0.tar.gzcd boost_1_67_0/./bootstrap.sh --with-libraries=all --with-toolset=gccsudo ./b2 install --prefix=/usrsudo ldconfig编译完,boost会安装在/usr/lib/目录里。如果没有用--prefix,则安装在/usr/local/lib/目录里。编译时间比较长。...原创 2021-05-21 15:11:01 · 172 阅读 · 0 评论 -
linux用户账号
adduser tommy #添加用户,默认会建立主目录,要求输入密码等。useradd tommy #默认不会建目录等。有参数做建目录,建密码等。passwd tommy #修改用户密码,默认的useradd,必须用这个建密码才能使用。#都能删除用户,两个命令参数不同。deluser --remove-home tommy #删除用户并删除用户的主目录和邮箱userdel -r tommy #删除用户并删除用户的主目录和邮箱#都能列出所有用户cut -d: -f1 /etc/passw.原创 2021-05-06 11:13:35 · 199 阅读 · 0 评论 -
linux下复制删除目录
cp -r ./aaa/ ./bbb/cp -r ./aaa ./bbbcp -r aaa bbb都是把aaa目录copy到bbb目录下。copy完成后,进入bbb,可以看到bbb里有个aaa目录。cp -r aaa/. bbb把aaa目录内容cp到bbb目录下。copy完了,bbb里是aaa目录里内容。cp -r aaa/* bbb跟上面一样。cp -r aaa/*.* bbb这个跟上面不一样,如果aaa里有两个文件,a123.txt和a456,只有a123.txt会被copy。目原创 2020-12-30 16:12:42 · 239 阅读 · 0 评论 -
Ubuntu命令行提示符添加git分支信息
在windows上,如果在git工作目录里,git bash 提示符里会显示当前分支:在Ubuntu里修改一下,实现同样效果:cd ~vim .bashrc在最后添加:PS1=""PS1="$PS1"'\[\033[32m\]' # change to greenPS1="$PS1"'\u@\h ' # user@host<space>PS1="$PS1"'\[\033[33m\]' # change to yell...原创 2020-09-28 13:07:56 · 1087 阅读 · 0 评论 -
编译问题
relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC在Ubuntu上编译遇到上面问题,这个提示,没有任何价值,不要被误导。解决方法:在本机重新编译一下用的.a文件,再编译链接就过了。...原创 2020-09-07 14:21:59 · 554 阅读 · 0 评论 -
git stash
stash的意思是存储。当我们在一个分支做了一些工作,还没有commit时,要切换到另一个分支,怎么办呢,先把修改的文件git add,再git stash,以后切换回这个分支时,git stash pop,就可以把存储的修改pop到当前分支。常用git stash命令:git stash save "save message" : 执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别。 git stash list :查看stash了哪些存储 git sta..原创 2020-07-23 21:14:54 · 117 阅读 · 0 评论 -
git submodule的使用
1. 假设当前工作目录是 /home/caz/main/,当前项目远程仓库是 https://xxxxx/main.git。2.在main目录里,git submodule add https://xxxxx/sub_mod.git sub_mod这样就把sub_mod这个子项目链接到main里的主项目了。在main目录里,会多出一个.gitmodules文件,和一个sub_mod目录。3.然后,git add 这些文件目录,git commit,git push,就提交到远程git仓库原创 2020-07-23 21:02:59 · 2538 阅读 · 0 评论 -
Ubuntu的ls命令卡住
执行ls/ll等命令卡住,退不出来,ctrl-c等也退不出来,只能再登陆一个杀掉进程。df执行也卡住。代码会卡死在access(xx_dir.c_str(), 6)这里。原因:目录里有mount的目录,mount的目录出了问题。解决办法umount -f 出问题的目录。如果该目录在使用中,kill相关进程,或重启。...原创 2020-07-14 19:22:02 · 1433 阅读 · 0 评论 -
-520103681
为什么用这个数字做标题呢?因为被坑了,服务器会发一个Blob给前端,前端先读出一个长度,再处理后面数据,但这个长度大多数时候都是-520103681。后来才发现,当发来的是图片时,根本没有长度,读出来的是jpeg图片的flag,0xE0FFD8FF。而0x0xE0FFD8FF在js里作为int32读出来是-520103681。...原创 2020-07-10 18:48:26 · 157 阅读 · 0 评论 -
Linux下解压zip,文件名乱码问题
在Windows下压缩的zip文件在Linux解压,由于有中文,文件名都是乱码。解决办法:unzip -O gbk xxx.zip我原来解决方法是:在windows上解压,在WIN10的Ubuntu里zip压缩,这样压缩的zip里面文件名是utf8编码的,解压就正常了。...原创 2020-07-10 18:02:11 · 393 阅读 · 0 评论 -
从源码编译安装gcc5.4.0
需要特定版本gcc,没有合适二进制安装,可以通过源码编译生成。下面是5.4.0编译。下载:wget http://mirrors.kernel.org/gnu/gcc/gcc-5.4.0/gcc-5.4.0.tar.gz解压,进入解压目录。下载依赖项。./contrib/download_prerequisites配置。./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib编译,尽量原创 2020-06-04 10:35:47 · 769 阅读 · 0 评论 -
gcc多版本共存管理
gcc -vcc -v查看当前gcc版本。------------------------------------------update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 40update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 55update-alternatives --install /usr/bin/gcc gcc /usr/local原创 2020-06-04 10:20:01 · 1788 阅读 · 0 评论 -
Ubuntu安装Nvida显卡驱动
我们的服务器是Ubuntu的,要安装显卡驱动,先到Nvidia的官网,找到相关Ubuntu驱动,*.run的文件,一百多兆,下载要十几个小时,下着下着还断了。找了另一个方法:$ sudo add-apt-repository ppa:graphics-drivers/ppa$ sudo apt-get update$ sudo apt-get install nvidia-430执行第一条命令时,会显示目前分支:## Current StatusCurrent long-liv原创 2020-05-24 00:59:06 · 399 阅读 · 0 评论 -
批量修改文件后缀
有时候需要批量修改文件名后缀,比如把*.aa改为*.bb,网上搜的都是shell程序,我试验一下,下面bash命令可以解决:ls *.aa | awk -F '.' '{print $1}' | xargs -I {} mv {}.aa {}.bbxargs -I {} 表示用参数替换后面的{}。...原创 2020-05-14 19:47:31 · 407 阅读 · 0 评论 -
去除重复文件内容
一个文件里数据是':'分隔的数据,我们只看看第四列数据有几种,可以:awk -F ':' '!a[$4]++' aa.txt这样第四列内容一样的,都只在第一次遇到时输出,后面有同样内容的不输出。如果对整句去重,去除文件里重复的行:sort -u temp.txt这个会排序,改变顺序,但可以去除重复行,输出的都是不重复的。...原创 2020-05-09 11:51:02 · 524 阅读 · 0 评论 -
用scp在本地和服务器间传送文件或目录
scp ./test.zip abc@123.1.2.3:/home/abc/temp/复制当前目录test.zip到服务器的/home/abc/temp/目录下,需要输入用户abc的密码。scp -r ./ttt abc@123.1.2.3:/home/abc/temp/复制当前目录下ttt目录及其子目录和文件到服务器的/home/abc/temp/目录下,需要输入用户abc的密码。...原创 2020-05-06 19:44:03 · 296 阅读 · 0 评论