- 博客(120)
- 资源 (1)
- 收藏
- 关注
原创 嵌入式QTlinux 工程编译
./fsl-imx-wayland-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.0.1.sh安装交叉工具然后source environment-setup-cortexa7hf-neon-poky-linux-gnueabi导出环境变量然后在QT工程文件夹里面执行/opt/fsl-imx-wayland/4.1.15-2.0.1/sysroots/x86_64-pokysdk-linux/usr/bin/
2021-11-29 21:49:41
648
原创 C++ 11学习
原始字符串字面量, 就不需要转义引脚. 原始字符串字面量以R"(开头, 以)" 结尾:string str = R"(Hello World!)";
2021-11-25 05:45:08
615
原创 多进程并发服务器
多进程并发服务器:1, socket() 创建监听套接字 lfd2, Bind() 绑定地址结构3, listen()4, while(1){cfd = accept() 接收客户端连接请求pid = fork()if(pid == 0){ close(lfd) 关闭用于建立连接的套接字 read(cfd) write(cfd)}else if(pid > 0){ close(cfd); //关闭用于客户端的套接字 cfd contiue;}}5,
2021-11-19 07:22:10
1813
原创 exec族111
exec 函数可以执行指定的程序主要有6个函数,int execl(const char *path, const char *arg, …);int execlp(const char *file, const char *arg, …);int execle(const char *path, const char *arg,…, char * const envp[]);int execv(const char *path, char *const argv[]);int execvp(
2021-11-11 06:24:08
87
原创 linux一些API函数
open (文件路径, 标志, mode)返回值: 文件描述符, 如果是正数, 表示打开成功, 否则返回-1文件操作的主标志.O_RDONLY 以只读方式,O_RDWR 以可读可写方式O_WRONLY 以只写方式主表示是互斥的, 使用其中的一种不能再使用其另一种文件操作的副标志:O_APPEND 读写文件从文件尾部开始移动, 所写入的数据追加到文件尾巴O_TRUNC 若文件存在且以可写的方式打开时, 此标志会将文件长度清为0,而原来存在的文件的资料也会消失.O_CREA
2021-11-07 19:40:27
228
原创 linux makefile
makefile 两个函数wildcardpatsubsetsrc = $(wildcard *.c)找到当前目录下所有后缀为.c的文件,赋值给srcobj = $(patsubset %.c,%.o, $(src))把src 变量里所有后缀为.c的文件替换成.oclean:-rm -rf $(obj) a.outrm前面的-, 表示如果出错了还依然的执行, 比如, 待删除文件集合是5个, 已经手动删除了1个,就只剩下4个,然而删除命令里面还是5个的集合, 就会有删除不存在的文件的问题,
2021-11-07 18:03:01
181
原创 linux 制作静态/动态库
静态库制作将要制作库的源文件编译成可执行的.o文件gcc -c 只编译不链接-o 指定文件名称gcc -c xxx.c -o xxx.o然后制作静态库ar rcs libname.a xx0.o xx1.oar rcs 制作工具, 固定的静态库必须以lib开头.a结尾,然后静态库的使用gcc main.c ./lib/libname.o -o a.out -I ./inc注意-I 指定头文件路径, 头文件可以包含库函数中的所有函数名称,这样只需要在源文件里面包含头文件,这样就可以调用
2021-11-07 15:01:50
224
原创 ubuntu 搭建FTP服务
1, 安装FTP服务sudo apt-get install vsftpd2, 对配置文件进行配置sudo gedit /etc/vsftpd.conf找到下面两个行, 改成下面配置local_enable=YESwrite_enable=YES确保上面两行前面没有 #, 有的话就取消修改完成后进行保存3, 重启FTP服务sudo /etc/init.d/vsftpd restart4,在windows 下下载FTP客户端https://www.filezilla.cn/downlo
2021-11-06 10:25:47
470
原创 linux 搭建samba服务
一安装:sudo apt-get install samba二, 配置:1, 创建一个需要共享的目录, 并且修改权限mkdir /home/longjingcha/sharesuod chmod 777 /home/longjingcha/share/ -R2, 打开配置文件:sudo vim /etc/samba/smb.conf在末尾添加下面信息, 严重提醒, [xxxx] 必须要添加, 可千万别漏了[share]path=/home/longjingcha/shareavaila
2021-11-06 09:46:22
281
原创 ubuntu 安装之后的一些事情
在装完ubuntu之后,一般就是调节分辨率大小,接着就是创建root 用户,su passwd root这样, 就可以填写密码就可以创建root用户了还有就是需要设置ubuntu上网, 这样才能安装一些环境,可以这样配置:4.静态IP:配置文件:/etc/network/interfacesauto eth0iface eth0 inet static // 如果想要动态IP 把static改成dhcp即可address 192.168.0.101netmask 255.255.
2021-11-02 09:10:24
338
原创 C++ 谓词
返回bool类型的仿函数称为谓词如果operator() 接受一个参数, 那么叫做一元谓词如果operator() 接受的两个参数, 那么叫做二元谓词.
2021-06-30 07:02:12
156
原创 C++函数对象
函数对象概念重载和拿书调用操作符的类, 该对象称为函数对象函数对象使用重载的()时, 行为类似函数调用, 也叫仿函数函数对象(其实就是仿函数)是一个类, 不是一个函数函数对象的使用函数对象在使用时, 可以像普通函数那样调用,可以有参数, 可以有返回值函数对象超出普通函数的概念, 函数对象可以有自己的状态函数对象可以作为参数传递class MYprint{ public: MYprint() { this->count = 0; } void operator()(
2021-06-30 06:53:02
91
原创 map/multimap 容器
map 概念map 中所有元素都是pairpair中第一个元素为key(键值), 起到索引作用, 第二元素为value(实值)所有元素都会根据元素的键值自动排序map/multimap 属于关联式容器, 低层结构是用二叉树实现优点: 可以根据key值快速找到value值map和multimap区别map 不允许容器中有重复key值元素multimap 允许容器中有重复key值元素构造map<T1, T2>mp; // map默认构造函数map(const map &am
2021-06-25 07:44:59
126
原创 C++ pair对组
成对出现的数据,利用数组可以返回两个数据pair<type, type> p(value1, value2);pair<type, type> p = make_pair(value1, value2);pair<string, int>p("tom", 20);p.first 访问到的是 第一个元素p.second 访问到的是 第二个元素...
2021-06-25 06:39:06
565
原创 i.MX8平台使用笔记
本人此博客甚至是作为使用过程中的记录, 没有参考意义,请各位不用给出意见.使用的是 NXP MIMX8QX6_M4 平台里面有双核芯片, 其中有A35和 M4两个内核,它们公用资源,需要对资源进行分配才能使用,分配的文件路径在 c_bootloader\scfw_export_mx8qx_b0\platform\board\mx8qx_mek\board.c文件, BRD_ERR(rm_set_pad_movable(pt_boot, SC_P_ADC_IN4,
2021-06-24 19:18:05
493
原创 C++ set/multiset 容器
set/multiset容器 属于关联式容器, 底层结构是用二叉树实现set/multiset 区别set 不允许容器中有重复的元素multiset 允许容器中有重复的元素两个都包含在include <set> 头文件中set 构造和赋值创建set容器以及赋值set<T> st; // 默认构造函数set(const set &st); // 拷贝构造函数赋值操作:set &operator=(const set &st); //
2021-06-23 22:20:44
258
1
原创 C++ list 容器
链表容器:优点: 可以对任意位置进行快速插入或删除元素缺点: 容器遍历速度, 没有数组快, 占用空间比数组大\双向链表: 由于链表的存储方式并不是连续的内存空间, 因此链表list中的迭代器只支持迁移和后移, 属于双向迭代器list 构造函数list<T> lst; // list 采用模板实现对象的默认构造形式list(beg, end); // 构造函数将[beg, end] 区间中的元素拷贝给本身list(n, elem); // 构造函数将n个elem拷贝给本身li
2021-06-22 07:40:49
181
原创 C++ queue 容器
queue 容器 先进先出一些api 函数接口入队 push出队 pop返回队头元素 front返回队尾元素 back判断队是否为空 empty返回队列大小 -size
2021-06-22 06:26:46
153
原创 C++ stack 容器
栈容器 先进后出不能编译栈容器其他API接口入栈-- push出栈 --pop返回栈顶 -- top判断栈是否为空 -- empty返回栈大小-- size
2021-06-22 06:08:24
215
原创 C++ deque容器
deque : 双端数组, 可以对头端进行插入删除操作deque与vector 区别vector 对于头部的插入删除来说, 效率低, 数据量越大, 效率越慢deque 相对而言, 头部的插入和删除比vector 速度快vector 访问元素时, 的速度比deque块, 这和两者内部实现有关deque 内部工作原理deque内部有一个存储空间, 叫中控器, 维护每段缓冲区中的内容, 缓冲区存放真实数据中控器维护的是每个缓冲区的地址, 使得使用deque时像一片连续的内存空间deque构造函数
2021-06-18 07:07:46
167
原创 C++ vector 容器
vector 数据结构类似于数组, 也称为单端数组vector与普通数组区别, 不同之处在于数组空间是静态的, 而vector 可以动态扩展动态扩展:本质不是在后面接续一块空间, 而是找更大的内存空间, 让后将元数据拷贝到新的空间, 释放旧空间函数原型vector<T> v; // 采用模板实现类实现, 默认构造函数vector(v.begin(), v.end()) // 将v[begin(), end()] 区间中的元素拷贝给本身vector(n, elem); // 构
2021-06-17 06:29:16
210
原创 c++ string 操作
string& assign ( const string& str );string& assign ( const string& str, size_t pos, size_t n );string& assign ( const char* s, size_t n );string& assign ( const char* s );string& assign ( size_t n, char c );basic_string &a
2021-06-16 05:48:41
737
原创 解决ubuntu 显示不出共享文件夹问题
本人使用的是ubuntu 18.04版本虚拟机但是在与windows 下共享的文件夹看不到, /mnt/hgfs/ 文件夹里面是空的经过查找别人的博客,发现只要执行sudo vmhgfs-fuse .host:/ /mnt/hgfs/ -o allow_other -o uid=1000即可成功...
2021-06-15 20:17:21
836
1
原创 C++ STL
C++ 的面向对象和泛型编程思想, 目的就是复用性的提升STL 标准模板库STL 从广义上分为, 容器(container) 算法(algorithm) 迭代器(iterator)容器和算法之间通过迭代器进行无缝连接stl 几乎所有的代码采用了模板或模板函数STL六大组件STL 大体分为六大组件, 分别是: 容器, 算法, 迭代器, 仿函数, 适配器(配接器), 空间配置器1, 容器: 各种数据结构, 如vector, list, deque, set, map 等用来存放数据2, 算法:
2021-06-15 07:25:37
157
1
原创 C++ 提高编程
C++ 提高编程 针对的是泛型编程和STL技术做详细讲解,探讨C++更深层的使用模板的概念模板就是建立通用的模板,大大提高复用性.模板的目的, 为了提高复用性, 将类型参数化函数模板template // 声明一个模板, 告诉编译器后面代码中紧跟着的T不要报错, T是一个通用数据类型void test_func(T &a, T &b)1, 自动类型推导test_func(a, b), 编译器自动推导T的类型2, 显示器指定类型test_func(a, b)...
2021-06-11 08:20:04
167
原创 linux 搭建ftp 服务器
安装sudo apt-get purge vsftpd 卸载应用sudo apt-get installl vsftpd 重新安装sudo mkdir /home/uftp 创建用户目录sudo useradd -d /home/uftp -s /bin/bash/ utfp 创建用户修改路径权限sudo chmod 777 /home/uftp也可以使用adduser 进行创建用户sudo passwd uftp 修改密码修改配置文件:sudo gedit /etc
2021-05-29 10:53:23
116
原创 linux 一些环境的搭建
在utuntu 中安装ssh server命令:sudo apt-get install openssh-serveropenssh-server is already the newest version (1:7.2p2-4ubuntu2.10).0 upgraded, 0 newly installed, 0 to remove and 21 not upgraded.弹出报错信息
2021-05-13 07:17:52
84
原创 linux makefile基础知识
makefile 基础格式目标:依赖(一个tab缩进)命令两个函数src = $(widcard ./*.c): 匹配当前工作目录下所有.c文件.obj = $(patsubst %.c, %.o, ($src))clean:(没有依赖)-rm -rf$(obj) a.out “-” 的作用是删除不存在的文件时, 不会报错, 顺序执行结束掉自动变量:$@: 在规则的命令中, 表示规则中的目标$^: 在规则的命令中,表示所有依赖条件$<: 表示第一个依赖条件,
2021-05-11 22:44:16
77
原创 linux 静态库与动态库的制作
静态库静态库命名规范,惊天库名字以lib开头,以.a为后缀静态库生成指令ar rcs libmylib.a file.o …制作步骤(1) 写好源码(2) 只编译不生成.o文件 gcc -c dev.c -o dev.o(3) 制作静态库 ar rcs libname.a dev.o(4) 制作静态库函数的头文件静态库的使用需要指定静态库的路径 以及使用-I 指定头文件路径. 进行编译链接(1) gcc test.c ./lib/libmylib.a -o test.o -I
2021-05-11 22:25:24
96
原创 linux 静态与动态库的制作
静态库编写静态库文件命令格式 以lib 开头.a为后缀 libname.a第一步: 编写好源码, 以及调用该源码函数的头文件第二步: 编译源代码生成.o文件gcc -c test.c -o test.o第三步: 制作静态库 使用arar rcs libname.a test.o …第四步: 静态库使用 gcc test.c ./libname.a -o test.out -I ./-I 的作用是指定头文件路径动态库命名规范, lib开头 .so结尾, 中间是库的名字动态库制作第一步:
2021-05-11 22:23:49
96
原创 隐式声明
当编译器进行编译的时候, 需要查找函数定义, 以及函数声明,当如果函数的定义和函数的声明的时候, 编译器会自动生成隐式声明,.隐式声明 默认返回值为int 类型,函数参数, 会根据你的传参进行 定义,如果函数原型, 和隐式声明 , 不符合, 那么就会失败....
2021-04-25 22:02:25
1150
原创 CAN 总线同步跳转宽度
本文参考自 http://www.pfautoecu.com/news/html/?143.html 文章, 在此进行声明和感谢.1, 同步跳转宽度, (SJW)要求 SJW为PES1(PBS1)和PES2(PBS2)调整的最大 长度SJW必须小于PES1和PES2的最小值SJW可以通过编程从1到Min(Phase_Seg1,4)取值。...
2021-04-24 06:49:35
2197
原创 linux 的软件安装与卸载
linux 一般情况会使用apt-get install xxx 进行软件安装apt-get remove xxx 进行软件卸载sudo dpkg -i xxx.deb deb 包的安装sudo dpkp -r xxx.deb 删除软件包命令
2021-04-22 07:50:21
109
原创 NXP 下载SDK的方法
首先打开这个网页https://mcuxpresso.nxp.com/en/select然后在左侧 点击Select a Board/ Processor然后选择板子Boards 选择哪款芯片的一个板子, 的SDK点击便以可选择下载的内容了
2021-04-21 11:44:00
2905
原创 C++ const 和constexpr
const 回顾一下内容cosnt int *p = &a;const 修饰的是 *p 所以, 表示指针的地址是可以改变的, 但是指针里面的内容是不能发生改变的, 指针可以指向任何地址, 一旦指向的地址, 该地址的内容就不能发生改变int * const p = &a; const 修饰的是p 所以指向的地址不能发生改变, 但是地址里面的内容是可以发生改变const 发生的阶段是在程序运行阶段constexpr 发生的阶段时编译阶段, 这样可以大大提升代码效率...
2021-04-19 22:45:03
108
原创 linux 系统编程学习
终端: 所有输入输出的总称。shell : 命令解析器, 根据输入的命令执行相应的命令cat /etc/shells 查看当前系统下有哪些shellecho $shell 查看当前系统正在使用的shell
2021-04-15 07:32:57
120
原创 FreeRTOS CPU使用率统计
想要使用CPU 利用率统计的话, 需要在FreeRTOSConfig.h 配置于系统运行时间和任务状态收集有关的配置选项.并且实现portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() 和 portGET_RUN_TIME_COUNTER_VALUE() 这两个宏定义.调用 vTaskGetRunTimeStats() 和 vTaskList() 函数获得任务的相关信息与CPU使用率的相关信息....
2021-04-14 22:44:03
552
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人