- 博客(148)
- 问答 (3)
- 收藏
- 关注
原创 CMake 打包已经存在的动态库生成 target
一. 背景在 CMakeLists.txt 中,某模块 A 通过 add_subdirectory 引入模块 B ,模块 B 通过 add_subdirectory 引入模块 C。模块 C 里面本身就是一个开源的动态库,比如 libtask。目的想要将 C 模块打包成一个 Target ,以便在 A 模块中中使用方便。二. 旧版本实现和存在问题A 模块不直接使用 C 模块,但是 A 模块使用到了 B 模块,B 模块编译依赖 C 模块,就需要导致 A 编译时要通过下面的方式引入 C 模块 incl
2021-12-01 19:53:23 2866
原创 Ubuntu 将 /home 或 /var 目录挂载到新的分区
背景在使用 docker 的过程中,docker 会将某些产物放到 /var/lib/docker/volumes 这会占用很大的跟目录磁盘空间,于是想办法将 /var 目录挂载到另一个一个单独的磁盘上面。参考链接如下:Ubuntu将var目录挂载到新硬盘步骤1. 查看当前磁盘空间df -h [目录名]比如 df -h 能够查看整个系统的磁盘情况。2. 创建新目录上图中我已经创建了一个新的目录,是 /media/var ,这里再重新操作一遍。sudo mkdir /media/var
2021-04-22 14:51:22 2514
原创 on-my-zsh git 仓库下运行卡顿
在 oh-my-zsh 进入 包含 git 仓库目录时,执行 ls 时会比较卡顿原因:oh-my-zsh 要获取 git 更新信息解决办法:设置 oh-my-zsh 不读取文件变化信息(在 git 项目目录执行下列命令)$ git config --add oh-my-zsh.hide-dirty 1如果还是慢,可以再设置 oh-my-zsh 不读取任何 git 信息$ git config --add oh-my-zsh.hide-status 1...
2020-11-26 11:35:26 527
原创 git 快速复制一个新项目
gitlab创建项目a及一个主分支master本地整体复制已有项目b本地克隆gitlab上新创建的项目a(git clone gitlab地址)将本地克隆过来的a文件夹下的.git目录拷贝到b项目下(cp -r .git …/b,注意是两个点,不是三个点,写两个点后,编辑器一直给输出三个点,晕)删除本地克隆过来的项目a,将本地的项目b改成a(这时候的.git已经是与gitlab远端项目的关联文件了)进入b项目下创建分支并切换(git checkout -b ‘1-admin-lsq’)本地分支与
2020-11-26 11:09:00 5167
原创 工厂方法模式和抽象工厂模式
工厂方法模式和抽象工厂模式工厂方法模式抽象工厂模式总结:工厂方法模式#include <string>#include <iostream>// Abstractclass Splitter{private: /* data */public: Splitter(/* args */); virtual ~Splitter();p...
2020-04-19 18:24:18 246
原创 展示gtest测试结果 -- 将gtest输出的xml结果转化成html展示
问题我们在使用gtest工具进行测试时, 一般结果会直接输出到终端, 对阅读很不友好, 如何能够利用gtest测试的结果, 做成一个可以展示的html页面, 让gtest测试结果看上起一目了然, 清清楚楚, 是今天讨论的话题概述采用常规的方式, 直接在百度搜索, 关于展示gtest测试结果文章很少, 有的一些, 因为需要安装各种依赖或者其他因素, 用起来也不是非常友好.但是经过不懈的搜索,...
2020-02-24 21:40:10 11854 5
转载 Cmake 交叉编译
转载自 http://zhixinliu.com/2016/02/01/2016-02-01-cmake-cross-compile/CMake交叉编译CMake的使用,以及如何将一个项目移植到Android。CMake的用法先让我们简单学习回顾一下cmake的基本知识:基本流程以linux平台为例,使用 CMake 生成 Makefile 并编译的流程如下:编写 CMake 配...
2019-09-05 20:31:35 514
原创 CMake学习资料
CMake 官方 FAQhttps://gitlab.kitware.com/cmake/community/wikis/FAQCMake 官方文档https://cmake.org/cmake/help/cmake2.4docs.htmlCMake 视频教程https://www.youtube.com/watch?v=CLvZTyji_UwCMake 维基教科书https://z...
2019-07-18 10:02:57 205
原创 Cmake 实例学习 一
一. 第一个简单的例子在一个目录下面实现一个简单的 hello world 程序使用cmake进行构建的时候,每个目录下面都要有一个 CMakeLists.txt 的文件如果是一个稍微大的工程,有多级目录,在上级目录中的 CMakeLists.txt 中会有定义要求编译子目录的逻辑当前目录中定义了一个main.c 和 CMakeLists.txt 文件,两个文件的内容分别如下main....
2019-07-13 15:02:02 371
原创 C++ 实现设计模式 -- 工厂模式
#include <iostream>class Shape{ public: virtual void drawshape() = 0;};class DrawCircle : public Shape{ public: void drawshape() { std::cout << "Circle\n"; }}; clas...
2019-05-16 16:09:03 243
原创 因链接静态库先后顺序不正确,引起符号定义找不到
问题项目中需要链接多个静态库,在编译的时候报错如下sdi_io.cpp:(.text._ZN13sdi_H264EncIO7DataPopEPm+0x30):对‘H264ENC_StatusGet(H264ENC_Status_t&)’未定义的引用可能原因是符号确实没有定义,而本文出现这个问题的原因是,链接的静态库有前后的依赖顺序解决方案方法一:修正静态库的链接顺序:可以通过手...
2019-05-15 11:02:06 3174
原创 OpenC 仿射变换
仿射变换(Affine Transformation)又称仿射映射,是指在几何中,一个向量空间进行一次线性变化并加上一个平移,变换位另一个的向量空间的过程。一个任意的仿射变换都能够表示为乘以一个矩阵(线性变换)接着加上一个向量(平移)的形式。仿射变换来表示如下三种常见的变换形式:旋转(线性 变换)平移(向量加)缩放(线性变换)...
2019-04-29 18:19:40 363
原创 OpenCV 像素存储
像素存储OpenCV 中图像矩阵的大小取决于所用的颜色模型,更准确的说是取决于图像所用到的通道数。如果使用的是灰度图,矩阵大概如图所示:如果使用的是多通道的图像,矩阵中的列会包含多个子列,子列的个数和通道数相等。例如 RGB 颜色模型的矩阵大致如下图所示:很多情况下,因为内存足够大,可以实现连续存储,因此图像中的各行能够一行一行的连接起来,形成一个长行。连续存储有助于提升图像扫描速度,...
2019-04-25 10:03:44 507
原创 QT 中使用 OpenCv 的 CascadeClassifier 报错
问题在 QT 中调用 OpenCv 的 CascadeClassifier 进行人脸框检测的时候,在构造函数中进行检测器的初始化,随后调用相机读取图片的时候就会报错,报的错误是 Segment Fault (段错误)解决尝试使用 gdb,valgrind 等解决没有进展在 QT 中进行编译的时候,报了一个警告,大概意思是说 libopencv_objdetect.so.3.4.3 和 l...
2019-04-18 16:28:47 1417
原创 qt 找不到 -lpulse-mainloop-glib,找不到 -lpulse问题
问题:使用 QT 编写视频展现程序报错找不到运行时库文件解决办法:首先 sudo find / -name libpulse.so*然后 sudo cp /usr/lib/x86_64-linux-gnu/libpulse.so.0 /usr/lib/libpulse.so对于libpulse-mainloop-glib首先find / -name libpulse-mainloop-g...
2019-04-17 23:52:53 1379
原创 gdb 调试
传参如果程序执行的时候需要加入参数,如./sample aa bb使用 gdb 的时候可以使用如下方式gdb --args ./sample aa bb执行启动 gdb 之后,直接使用 r,就是 run 的意思,或者可以使用 b 加一个断点进行调试。处理信号如果在使用的时候,遇到类似下面的报错Thread 2 “sample_sd_abnor” received s...
2019-03-29 20:34:11 535
原创 valgrind 使用 kcachegrind 查看函数运行时间
安装首先安装运行分析函数时间的工具 kcachegrind下载安装包 http://kcachegrind.sourceforge.net/,下载最新的 tar.gz 文件解压文件,进入解压之后的目录,从 README 中可以找到安装方式,这里记录一下cmake .make -j8sudo make install中间过程中遇到的一些,cmake的时候出问题,找不到一个依赖包CM...
2019-03-15 14:43:38 1951
原创 tar 打包问题
项目中使用到 tar 文件,同一个 tar 文件解压之后在压缩,在程序执行的时候不能使用了原因是 tar 对文件名长度有限制,当文件名过程的时候,使用 --format=ustar 进行压缩...
2019-03-14 20:56:59 504
原创 s32v 开发板安装 apex 驱动
安装驱动首先要获取到 apex.ko 文件,这个应该是硬件厂商提供,执行下面命令安装首先需要给 apex.so 文件加上可执行权限insmod apex.ko查看是否安装成功执行下面命令,查看是否安装成功,如果安装成功,执行的结果中会有 apexlsmod使用测试程序测试硬件厂商会提供测试程序,成功安装 apex 的设备可以通过测试程序测试结果...
2019-03-13 15:44:41 480
原创 网线直连开发板
pc 端配置点击pc端无线链接图标编辑链接以太网编辑IPv4设置方法:与其他计算机共享根据putty获取的动态ip使用ssh登录解决 ip 无法登录问题设置 pc 端 ip 和开发板 ip 在同一个网段比如开发板 ip 是 10.42.0.123可以设置自己机器的 ip 为 10.42.0.11sudo ifconfig xxxxx 10.42.0.11...
2019-03-13 13:33:57 900
原创 putty 串口登录开发板
安装putty多个平台均可以安装puttypc端配置使用串口线连接开发板ls /dev查看是否出现类似于ttyUSBx的文件sudo putty弹出页面,选择SerialSerial line填写/dev/ttyUSBxSpeed填写115200(根据不同开发板,选择不同参数)依次点击Load,Open弹出终端,回车,使用root登录,查看ip使用ssh登录...
2019-03-13 11:10:13 2191
原创 嵌入式开发板设置无密码登录
本次配置需要修改的ssh登录的配置文件vi /etc/ssh/sshd_config允许root用户远程登录设置PermitRootLogin参数值为yes#LoginGraceTime 2mPermitRootLogin yes#StrictModes yes#MaxAuthTries 6#MaxSessions 10允许无密码登录设置PermitEmptyPasswor...
2019-03-13 10:23:42 1621 2
原创 opencv 1 图像载入、显示和输出
三个函数imread()namedWindow()inshow()1. imread函数原型:Mat imread(const string& filename, int flags = 1 );参数解析:const string& finename将要载入的图片路径名。Windows操作系统下面支持如下类型的图片:Windows位图 - *.bmp...
2019-03-02 20:20:01 294
原创 valgrind massif内存分析工具
使用方式valgrind --tool=massif ./a.outa.out 是可执行程序,当程序执行结束之后,会生成一个分析报告,分析报告的名称一般为 massif.out.pid 。如果是循环程序,可以使用 top 查看内存,当内存增长到一定程序之后 Ctrl C 掉,也会生成分析报告。在 x86 平台安装 massif visualizer 。Ubuntu平台的安装方式为sudo...
2019-03-02 10:18:47 1484
原创 redis学习 -- 简单动态字符串
Redis没有使用C语言字符串的形式,通过’\0’作为结尾,而是使用了简单动态字符串(simple dynamic string)。当Redis使用的字符串不需要修改字符串的内容的时候,可以使用C语言提供的字符串,当需要修改内容的时候就使用的是简单动态字符串。Redis键值对的操作中,都是使用的简单动态字符串的方式。这里可以把简单动态字符串理解成一个对象,这个对象的底层保存着一个字符串。SD...
2018-10-09 21:36:29 418
原创 2. 两数相加
题目给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807方法一思路...
2018-09-10 10:16:01 209
原创 1. 两数之和
方法一 – 暴力求解两层for循环方法二 – 两遍哈希表步骤:遍历数组,将数据中的元素放入到哈希表中遍历数组,从哈希表中寻找是否有相加和为target的数据注意点:第二次遍历数组的时候,第一次遇到相加和为target的数据的时候,就应该退出循环,如果不退出,将会有两个结果,比如第一次匹配到了1,2,那么还会匹配一次2,1代码:class S...
2018-09-09 14:22:58 338
原创 括号匹配算法
思路大体思路:数据结构选用栈,读到左括号时入栈,读到右括号时判断是否匹配,匹配则左括号出栈,非括号字符则继续往下读代码#include <iostream>#include <stack>#include <string>using namespace std;bool is_match_parentheses(const stri...
2018-09-09 09:30:40 305
原创 awk 6.0 — awk模式之二
awk的语法 awk [options] ‘Pattern {Actions}’ file1,file2… 之前介绍了三种模式:空模式,关系运算模式,BEGIN/END模式正则模式模式可以理解成条件,正则模式就是满足正则表达式条件的,就执行相应的动作,否则不执行。 如果我们想要找到在/etc/passwd文件中,以“_krb”开头的内容该如何找呢 gre...
2018-08-22 08:51:08 251
原创 awk5.0 — awk模式之一
再次重申awk的语法 awk [options] ‘Pattern {Actions}’ file1,file2…awk模式,在之前的文章中简单使用了BEGIN和END。这里的模式,其实我们可以理解成是条件,awk是一行行处理数据的,如果满足某个条件awk就处理某一行数据,如果不满足就不处理,这就可以理解成模式。 意思就是,awk在一行行处理文本的时候,如果这行文本满足某个模式就处...
2018-08-21 08:43:07 683
原创 awk4.0 — awk格式化
awk格式化使用printf函数,类似于C语言中的printf函数 比如 awk '{printf "%s\n", $1}' test1上面的方式是awk每次处理一行,然后进行替换的,如果我们想要传入多个参数,此时就需要多个格式化 ...
2018-08-21 08:23:34 407
原创 awk3.0 — awk变量
awk有一些内置变量和外置变量,内置变量就是awk自带的变量,用户可以拿来直接使用,如FS,OFS等 awk常用内置变量如下几种: FS:输入单词分隔符,默认是空格 OFS:输出单词分隔符,默认是空格RS:指定输入时候的换行符(awk是一行行处理数据的) ORS:指定输出的符号,替代换行符(awk以换行符区别一条数据) NF:一条数据单词的个数,常用来输出最后...
2018-08-21 08:00:42 231
原创 awk3.0 — awk变量
awk有一些内置变量和外置变量,内置变量就是awk自带的变量,用户可以拿来直接使用,如FS,OFS等 awk常用内置变量如下几种: FS:输入单词分隔符,默认是空格 OFS:输出单词分隔符,默认是空格RS:指定输入时候的换行符(awk是一行行处理数据的) ORS:指定输出的符号,替代换行符(awk以换行符区别一条数据) NF:一条数据单词的个数,常用来输出最后...
2018-08-20 08:32:35 546
原创 awk2.0 — awk分隔符
再次重申awk的语法 awk [options] ‘Pattern {Actions}’ file1,file2…awk默认分隔符是空格,分隔符有分为“输入分隔符”和“输出分隔符”。 输入分隔符:awk在处理每一行文本的时候,以默认的空格将文本分隔成一个个单词作为变量。 输出分隔符:awk处理完文本之后,输出显示的时候,以空格分开。 输入分隔符如果文本是空格隔...
2018-08-18 09:13:13 1285
原创 awk1.0 — awk基础
简介grep,sed,awk被称为Linux文本处理的三剑客,各有特点 grep:适合文本的匹配和查找 sed:编辑匹配到的文本 awk:对文本进行格式化输出 awk简介awk的基本语法是awk [options] 'Pattern {Actions}' file1,file2...Actions指的是工作,awk擅长文本输出,最常用的动作是print和pri...
2018-08-17 09:31:20 295
原创 vim配置
vim ~/.vimrc将下面的文件填写进去就好了set nuset tabstop=4set nobackupset expandtabset autoindentset bg=darksyntax onset mouse=afiletype plugin indent onset cindent shiftwidth=4set ts=4set sw=4highl...
2018-08-16 11:36:53 241
原创 epoll
select,poll,epoll都是多路复用的一种机制,多路复用就是通过一种 机制监听多个文件描述符,当文件描述符就绪之后,就通知相关的程序就行读写的操作 select,poll实际上是让内核去不断的轮询,看看时间是否发生了,文件描述符的拷贝,只要一次从用户态拷贝到内核态 epoll是通过回调函数的机制,当时文件描述符就绪之后,就会将唤醒等待队列上面的等待者,等待着调用回调函数,就就...
2018-08-16 08:01:58 585
原创 搜索引擎Killed原因排查
问题描述腾讯云单核2G内存,运行程序的时候,程序有时会挂掉了,设置ulimit -c unlimited之后,想要core文件,结果程序运行的时候,直接提示killed,没有出现core文件调研查询killed的原因多是因为内存不足了,系统自动将程序杀死,此时没有出现core文件 使用free -h查看内存使用情况[root@VM_125_247_centos serv...
2018-08-16 07:58:47 658
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人