![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统和linux
假老练啊哦
男性最大的魅力是幽默
展开
-
CMake编译时支持GDB调试
运行程序的时候出现了coredump,所以得在编译时候加入调试选项,gdb -g,但是现在使用cmake了,所以得加入调试选项。在linux环境下通过设置编译选项CXXFLAGS或者CFLAGS使程序可以支持GDB调试,在CMake构建的工程中也可以方便的实现。在CMakeLists.txt文件中添加如下语句:SET(CMAKE_BUILD_TYPE "Debug")SET(CMA...原创 2019-12-18 15:23:06 · 1130 阅读 · 0 评论 -
source vimrc的时候报错:.vimrc:1: command not found: syntax
用了别人的.vimrc文件,每次想往里面加点东西,之后想source运行下,总是出错,一搞就是错误:command not found: syntax意思是syntax无法被识别,什么原因呢?这个我还刚开始以为是vimrc最新的不识别syntax了呢,仔细在网上查找资料之后,才发现了其中的原委:~/.vimrc文件是vim的配置文件,在每次vim编辑任何文件的时候都会自动读取并设...转载 2019-12-08 20:48:28 · 4304 阅读 · 0 评论 -
linux下的mv指令
今天使用mv指令,本来想把桌面改成desktop,因为每次要切换输入法,后来使用了mv语句,突然发现桌面上的文件夹都没有了,全部都到"桌面/desktop"中了。然后想用cp指令把当前文件夹下所有文件拷贝到上一级,这时发现有个文件是数据集,数据量很大,就想以移动的方法。当前文件夹下所有文件指令:./* #表示当前目录下所有文件cp ./* .. #把当前文件夹下所有东西拷贝...原创 2019-12-07 17:11:14 · 524 阅读 · 0 评论 -
linux下链接库文件默认搜索路径
库文件包含静态库文件和动态库文件。静态库就是在链接的时候加入到执行代码中,成为了代码的一部分,所以生成的可执行文件就比较大,以后和静态库没瓜葛了,自己随便用了;动态库是指运行的时候会链接到库文件,如果没找到就运行。先介绍一下默认的库搜索路径,这些默认搜索路径是不分动态库和静态库的,都会在前面几个路径都找不到的情况来这儿找,所以这个是优先级最低的。一般 Linux 系统把/lib...原创 2019-12-04 20:28:16 · 4739 阅读 · 0 评论 -
linux下的目录
linux下的目录经常混淆,这里专门积累一下。注意usr并不是user用户的缩写,而是unix system resource 的缩写。root目录,所有用户都可以共享的目录cd /home目录,所有普通用户的父目录cd /home当前用户的home目录cd ~如果是root用户,相当于到root目录 如果是普通用户,相当于到/home/当前用户...原创 2019-11-21 21:22:14 · 94 阅读 · 0 评论 -
linux下无法打开包括文件:“pcl/io/pcd_io.h”: No such file or directory
背景:今天想把Apollo中TestData对应的点云pcds数据处理出来,然后在linux编译链接的时候出现了,无法打开包括文件pcl/io/pcd_io.h,没有这个文件和路径。后来我查了些资料,知道C++在预处理的include的时候,会默认的包含两个路径:/usr/local/include(当前用户的include目录) /usr/include(整个系统的inlcude目录)...原创 2019-11-14 14:39:41 · 15399 阅读 · 6 评论 -
linux下环境变量设置(注意和ubuntu下文件名的区别)
linux下环境变量(注意和ubuntu文件名不同)/etc/profile:在登录时,OS为配置用户环境使用的第一个文件。此文件中包含OS为每个用户设置的环境信息,当任意一个用户登录时,该文件被执行,OS加载其中的环境变量,并从 /etc/profile.d 目录的配置文件中收集 shell 的设置。(这一句什么意思?)~/.bash_profile(ubuntu为 ~/.profile...原创 2019-11-18 16:13:59 · 235 阅读 · 0 评论 -
如何查看和修改gcc、g++默认include路径
如何查找gcc、g++默认include路径?注意:"`"是Tab上面的那个符号。#gcc`gcc -print-prog-name=cc1plus` -v#g++`g++ -print-prog-name=cc1plus` -v我们都知道在编译的预处理阶段, 编译器会展开所有的#include<...>和#include"..."文件,那么编译器是按照什么顺序...原创 2019-11-14 14:15:16 · 21660 阅读 · 3 评论 -
可重入和不可重入
重入:可以重新进入,意思是在执行时,因为任务调动中断,再次重新进入继续执行,对其结果没有影响。例子:可重入锁和不可重入锁可重入函数和不可重入函数函数当中只要有static变量,那么函数就是一个不可重入的函数。...原创 2019-10-31 16:33:11 · 791 阅读 · 0 评论 -
硬链接(hard link)和符号连接(symbolic link)的区别
硬链接(hard link)和符号连接(symbolic link)的区别:通俗一点理解,可以把硬链接当成源文件的副本,他和源文件一样的大小但是事实上却不占任何空间。符号链接可以理解为类似windows一样的快捷方式。一、链接文件链接文件有两种方式,符号链接和硬链接。1、符号链接文件符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,也可以链接不同文件系统的文件。甚至...转载 2019-10-31 16:21:08 · 1791 阅读 · 0 评论 -
linux下如何查找某个数据结构或者函数在哪个头文件之中
可以通过man指令来查找某个数据结构或者函数在哪个头文件之中。man命令后面加数字是有特定意义的man : linux标准命令(shell命令)的查询man 2表示查询的是系统内核可调用的函数,比如open,write;man 3表示查询的是常用的函数与函数库(大部分是C函数库)。...原创 2019-04-01 11:18:15 · 1906 阅读 · 0 评论 -
netstat -an
netstat"-a"选项意在显示所有连接当不附加"-n"选项时,它显示的是本地计算机的netbios名字+端口号;而加了"-n"选项后,它显示的是本地IP地址+端口号。...原创 2019-10-31 16:16:43 · 4622 阅读 · 0 评论 -
Linux基本操作指令
撤销 命令模式下,输入 u跳转命令模式下,先输入行号,再输入gg如跳转到20行,则20gg文件的复制和删除cp 和 rm参数:-i 删除前逐一询问确认;-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认;-r 将目录及以下之档案亦逐一删除。vim在显示行号的时候复制,不要行号shift+v进入visiual模式,选择要复制的行,之后输入“+y就可以了...原创 2019-01-28 20:51:15 · 120 阅读 · 0 评论 -
socket编程(一)
字节序转换函数为什么要引入网络字节序?因为socket在不同系统之间通信,他们对于数据的存储是不同的,可能会无法解析数据。所以要统一一个字节序。头文件:#include<arpa/inet.h>//h代表host//n代表network//s代表short//l代表long//例子:ntohl-> 网络字节序转换成主机字节序uint32_t htonl...原创 2019-01-27 16:02:16 · 183 阅读 · 0 评论 -
如何来编写一个makefile?
Makefile是文本,不要把他当成特殊格式。在linux下直接vim Makefile就可以了。vim Makefile编写makefile的步骤弄清楚文件之间的依赖关系 编译出可执行文件,和目标文件链接起来 清理所有生成的目标文件和可执行文件代码:01byteorder:01byteorder.o //依赖于目标文件 gcc 01byteorder.o ...原创 2019-01-27 15:28:59 · 434 阅读 · 0 评论 -
define定义宏函数
#define ERR_EXIT(m)\ do\ {\ perror(m);\ exit(EXIT_FAILURE);\ }while(0)c语言在宏定义函数的时候,如果有换行的话要加 ' \ ' 。我佛了c语言!...原创 2019-01-27 18:07:16 · 1503 阅读 · 0 评论 -
socket编程(二)
编写一个最基本的回射服务器服务器端: 1 #include<arpa/inet.h> 2 #include<netinet/in.h> 3 #include<sys/types.h> 4 #include<sys/socket.h> 5 #include<string.h> 6 #include<st...原创 2019-01-28 10:26:49 · 119 阅读 · 0 评论 -
解决bind:Address already in use
在弄两个回射服务器/客户端的时候遇到这个问题,我也没打开echosrv呀,就显示:“bind:Address already in use”。一开始使用在socket(三)中检测TIME_WAIT的方法,指令:netstat -an|grep TIME_WAIT,发现没有处于TIME_WAIT的状态。然后根据指令:netstat -nap,这时候发现echosrv处于CLOSE_WAIT的...原创 2019-01-29 11:48:54 · 53154 阅读 · 0 评论 -
linux学习积累
一开始想在linux下通过指令复制,然后再复制到win10下博客里面,后来发现不行,问了下室友才知道是跨系统的操作,指令都失效了,后来又在linux下复制了echosrv的readn()和writen()函数,想要复制到echocli当中,然后发现也不行。。想了想因为我开的是两个terminal,两个终端也是两个独立的?不能相互复制吗?应该是吧。。每次都是各自打开一个服务器和终端。 #d...原创 2019-01-29 12:01:02 · 94 阅读 · 0 评论 -
linux下多个.c文件之间的内容拷贝
佛了佛了 怕了怕了!linux指令真是让我心碎。第一步:vim a.c b.c 或者 vim *.c第二步:文件之间的切换:n 下一个文件 :wn保存并切换到下一个文件:N 上一个文件 :wN保存并切换到上一个文件:.= 看当前行(什么意思?还没用过)实际操作:第一个文件输入指令:100,200y(100到200行复制)切换到第二个文件:n在600...原创 2019-01-30 18:02:42 · 617 阅读 · 0 评论 -
Linux指令从普通用户切换的超级用户,打开vimrc文件
一开始直接通过:su - 指令来切换成超级用户,显示“认证失败”百度了之后才知道,原因是:Ubuntu中默认不开启root账户,所以root账户是没有密码的。这时候我们就需要设置一个root账户的密码。(sudo是linux下常用的允许普通用户使用超级用户权限的工具)操作:1、sudo su 输入 该账户密码就可以切换到root账户,命令行的符号就由$转成#了2、pass...原创 2019-01-27 09:52:57 · 6770 阅读 · 0 评论