<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[NeilZhy]]></title><description><![CDATA[与人为善，天道酬勤]]></description><link>https://blog.youkuaiyun.com/Neil4</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Neil4]]></copyright><item><title><![CDATA[CMake 打包已经存在的动态库生成 target]]></title><link>https://blog.youkuaiyun.com/Neil4/article/details/121663105</link><guid>https://blog.youkuaiyun.com/Neil4/article/details/121663105</guid><author>Neil4</author><pubDate>Wed, 01 Dec 2021 19:53:23 +0800</pubDate><description><![CDATA[一. 背景
在 CMakeLists.txt 中，某模块 A 通过 add_subdirectory 引入模块 B ，模块 B 通过 add_subdirectory 引入模块 C。模块 C 里面本身就是一个开源的动态库，比如 libtask。目的想要将 C 模块打包成一个 Target ，以便在 A 模块中中使用方便。
二. 旧版本实现和存在问题
A  模块不直接使用 C 模块，但是 A 模块使用到了 B 模块，B 模块编译依赖 C 模块，就需要导致 A 编译时要通过下面的方式引入 C 模块
  incl]]></description><category></category></item><item><title><![CDATA[实时操作系统与分时操作系统]]></title><link>https://blog.youkuaiyun.com/Neil4/article/details/118026309</link><guid>https://blog.youkuaiyun.com/Neil4/article/details/118026309</guid><author>Neil4</author><pubDate>Fri, 18 Jun 2021 14:50:35 +0800</pubDate><description><![CDATA[实时操作系统与分时操作系统的区别
分时操作系统与实时操作系统

]]></description><category></category></item><item><title><![CDATA[Ubuntu 将 /home 或 /var 目录挂载到新的分区]]></title><link>https://blog.youkuaiyun.com/Neil4/article/details/116014517</link><guid>https://blog.youkuaiyun.com/Neil4/article/details/116014517</guid><author>Neil4</author><pubDate>Thu, 22 Apr 2021 14:51:22 +0800</pubDate><description><![CDATA[背景
在使用 docker 的过程中，docker 会将某些产物放到 /var/lib/docker/volumes 这会占用很大的跟目录磁盘空间，于是想办法将 /var 目录挂载到另一个一个单独的磁盘上面。

参考链接如下：Ubuntu将var目录挂载到新硬盘
步骤
1. 查看当前磁盘空间
df -h [目录名]

比如 df -h 能够查看整个系统的磁盘情况。

2. 创建新目录
上图中我已经创建了一个新的目录，是 /media/var ,这里再重新操作一遍。
sudo mkdir /media/var]]></description><category></category></item><item><title><![CDATA[on-my-zsh git 仓库下运行卡顿]]></title><link>https://blog.youkuaiyun.com/Neil4/article/details/110181655</link><guid>https://blog.youkuaiyun.com/Neil4/article/details/110181655</guid><author>Neil4</author><pubDate>Thu, 26 Nov 2020 11:35:26 +0800</pubDate><description><![CDATA[在 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


...]]></description><category></category></item><item><title><![CDATA[git 快速复制一个新项目]]></title><link>https://blog.youkuaiyun.com/Neil4/article/details/110176452</link><guid>https://blog.youkuaiyun.com/Neil4/article/details/110176452</guid><author>Neil4</author><pubDate>Thu, 26 Nov 2020 11:09:00 +0800</pubDate><description><![CDATA[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’）
本地分支与]]></description><category></category></item><item><title><![CDATA[工厂方法模式和抽象工厂模式]]></title><link>https://blog.youkuaiyun.com/Neil4/article/details/105619637</link><guid>https://blog.youkuaiyun.com/Neil4/article/details/105619637</guid><author>Neil4</author><pubDate>Sun, 19 Apr 2020 18:24:18 +0800</pubDate><description><![CDATA[工厂方法模式和抽象工厂模式工厂方法模式抽象工厂模式总结:
工厂方法模式
#include &lt;string&gt;
#include &lt;iostream&gt;

// Abstract
class Splitter
{
private:
    /* data */
public:
    Splitter(/* args */);
    virtual ~Splitter();
p...]]></description><category></category></item><item><title><![CDATA[展示gtest测试结果 -- 将gtest输出的xml结果转化成html展示]]></title><link>https://blog.youkuaiyun.com/Neil4/article/details/104484792</link><guid>https://blog.youkuaiyun.com/Neil4/article/details/104484792</guid><author>Neil4</author><pubDate>Mon, 24 Feb 2020 21:40:10 +0800</pubDate><description><![CDATA[问题
我们在使用gtest工具进行测试时, 一般结果会直接输出到终端, 对阅读很不友好, 如何能够利用gtest测试的结果, 做成一个可以展示的html页面, 让gtest测试结果看上起一目了然, 清清楚楚, 是今天讨论的话题
概述
采用常规的方式, 直接在百度搜索, 关于展示gtest测试结果文章很少, 有的一些, 因为需要安装各种依赖或者其他因素, 用起来也不是非常友好.
但是经过不懈的搜索,...]]></description><category></category></item><item><title><![CDATA[Cmake 交叉编译]]></title><link>https://blog.youkuaiyun.com/Neil4/article/details/100566518</link><guid>https://blog.youkuaiyun.com/Neil4/article/details/100566518</guid><author>Neil4</author><pubDate>Thu, 05 Sep 2019 20:31:35 +0800</pubDate><description><![CDATA[转载自 http://zhixinliu.com/2016/02/01/2016-02-01-cmake-cross-compile/

CMake交叉编译
CMake的使用，以及如何将一个项目移植到Android。
CMake的用法
先让我们简单学习回顾一下cmake的基本知识：
基本流程
以linux平台为例，使用 CMake 生成 Makefile 并编译的流程如下：
编写 CMake 配...]]></description><category></category></item><item><title><![CDATA[CMake学习资料]]></title><link>https://blog.youkuaiyun.com/Neil4/article/details/96424135</link><guid>https://blog.youkuaiyun.com/Neil4/article/details/96424135</guid><author>Neil4</author><pubDate>Thu, 18 Jul 2019 10:02:57 +0800</pubDate><description><![CDATA[CMake 官方 FAQ
https://gitlab.kitware.com/cmake/community/wikis/FAQ
CMake 官方文档
https://cmake.org/cmake/help/cmake2.4docs.html
CMake 视频教程
https://www.youtube.com/watch?v=CLvZTyji_Uw
CMake 维基教科书
https://z...]]></description><category></category></item><item><title><![CDATA[Cmake 实例学习 一]]></title><link>https://blog.youkuaiyun.com/Neil4/article/details/95753583</link><guid>https://blog.youkuaiyun.com/Neil4/article/details/95753583</guid><author>Neil4</author><pubDate>Sat, 13 Jul 2019 15:02:02 +0800</pubDate><description><![CDATA[一. 第一个简单的例子
在一个目录下面实现一个简单的 hello world 程序
使用cmake进行构建的时候，每个目录下面都要有一个 CMakeLists.txt 的文件
如果是一个稍微大的工程，有多级目录，在上级目录中的 CMakeLists.txt 中会有定义要求编译子目录的逻辑
当前目录中定义了一个main.c 和 CMakeLists.txt 文件，两个文件的内容分别如下

main....]]></description><category></category></item><item><title><![CDATA[C++ 实现设计模式 -- 工厂模式]]></title><link>https://blog.youkuaiyun.com/Neil4/article/details/90265774</link><guid>https://blog.youkuaiyun.com/Neil4/article/details/90265774</guid><author>Neil4</author><pubDate>Thu, 16 May 2019 16:09:03 +0800</pubDate><description><![CDATA[#include &lt;iostream&gt;

class Shape
{
  public:
  virtual void drawshape() = 0;
};

class DrawCircle : public Shape
{
  public:
  void drawshape() {
    std::cout &lt;&lt; "Circle\n";
  }
}; 

clas...]]></description><category></category></item><item><title><![CDATA[因链接静态库先后顺序不正确，引起符号定义找不到]]></title><link>https://blog.youkuaiyun.com/Neil4/article/details/90231905</link><guid>https://blog.youkuaiyun.com/Neil4/article/details/90231905</guid><author>Neil4</author><pubDate>Wed, 15 May 2019 11:02:06 +0800</pubDate><description><![CDATA[问题
项目中需要链接多个静态库，在编译的时候报错如下
sdi_io.cpp:(.text._ZN13sdi_H264EncIO7DataPopEPm+0x30)：对‘H264ENC_StatusGet(H264ENC_Status_t&amp;)’未定义的引用

可能原因是符号确实没有定义，而本文出现这个问题的原因是，链接的静态库有前后的依赖顺序
解决方案
方法一：修正静态库的链接顺序：可以通过手...]]></description><category></category></item><item><title><![CDATA[OpenC 仿射变换]]></title><link>https://blog.youkuaiyun.com/Neil4/article/details/89680529</link><guid>https://blog.youkuaiyun.com/Neil4/article/details/89680529</guid><author>Neil4</author><pubDate>Mon, 29 Apr 2019 18:19:40 +0800</pubDate><description><![CDATA[仿射变换（Affine Transformation）又称仿射映射，是指在几何中，一个向量空间进行一次线性变化并加上一个平移，变换位另一个的向量空间的过程。
一个任意的仿射变换都能够表示为乘以一个矩阵（线性变换）接着加上一个向量（平移）的形式。
仿射变换来表示如下三种常见的变换形式：
旋转（线性 变换）
平移（向量加）
缩放（线性变换）

...]]></description><category></category></item><item><title><![CDATA[OpenCV 像素存储]]></title><link>https://blog.youkuaiyun.com/Neil4/article/details/89509961</link><guid>https://blog.youkuaiyun.com/Neil4/article/details/89509961</guid><author>Neil4</author><pubDate>Thu, 25 Apr 2019 10:03:44 +0800</pubDate><description><![CDATA[像素存储
OpenCV 中图像矩阵的大小取决于所用的颜色模型，更准确的说是取决于图像所用到的通道数。
如果使用的是灰度图，矩阵大概如图所示：

如果使用的是多通道的图像，矩阵中的列会包含多个子列，子列的个数和通道数相等。例如 RGB 颜色模型的矩阵大致如下图所示：

很多情况下，因为内存足够大，可以实现连续存储，因此图像中的各行能够一行一行的连接起来，形成一个长行。连续存储有助于提升图像扫描速度，...]]></description><category></category></item><item><title><![CDATA[QT 中使用 OpenCv 的 CascadeClassifier 报错]]></title><link>https://blog.youkuaiyun.com/Neil4/article/details/89381836</link><guid>https://blog.youkuaiyun.com/Neil4/article/details/89381836</guid><author>Neil4</author><pubDate>Thu, 18 Apr 2019 16:28:47 +0800</pubDate><description><![CDATA[问题
在 QT  中调用 OpenCv 的 CascadeClassifier 进行人脸框检测的时候，在构造函数中进行检测器的初始化，随后调用相机读取图片的时候就会报错，报的错误是 Segment Fault （段错误）
解决
尝试使用 gdb，valgrind 等解决没有进展
在 QT 中进行编译的时候，报了一个警告，大概意思是说 libopencv_objdetect.so.3.4.3 和 l...]]></description><category></category></item><item><title><![CDATA[qt 找不到 -lpulse-mainloop-glib，找不到 -lpulse问题]]></title><link>https://blog.youkuaiyun.com/Neil4/article/details/89367784</link><guid>https://blog.youkuaiyun.com/Neil4/article/details/89367784</guid><author>Neil4</author><pubDate>Wed, 17 Apr 2019 23:52:53 +0800</pubDate><description><![CDATA[问题：使用 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...]]></description><category></category></item><item><title><![CDATA[gdb 调试]]></title><link>https://blog.youkuaiyun.com/Neil4/article/details/88901325</link><guid>https://blog.youkuaiyun.com/Neil4/article/details/88901325</guid><author>Neil4</author><pubDate>Fri, 29 Mar 2019 20:34:11 +0800</pubDate><description><![CDATA[传参
如果程序执行的时候需要加入参数，如

./sample aa bb

使用 gdb 的时候可以使用如下方式
gdb --args ./sample aa bb


执行
启动 gdb 之后，直接使用 r，就是 run 的意思，或者可以使用 b 加一个断点进行调试。
处理信号
如果在使用的时候，遇到类似下面的报错


Thread 2 “sample_sd_abnor” received s...]]></description><category></category></item><item><title><![CDATA[valgrind 使用 kcachegrind 查看函数运行时间]]></title><link>https://blog.youkuaiyun.com/Neil4/article/details/88574193</link><guid>https://blog.youkuaiyun.com/Neil4/article/details/88574193</guid><author>Neil4</author><pubDate>Fri, 15 Mar 2019 14:43:38 +0800</pubDate><description><![CDATA[安装
首先安装运行分析函数时间的工具 kcachegrind
下载安装包 http://kcachegrind.sourceforge.net/，下载最新的 tar.gz 文件
解压文件，进入解压之后的目录，从 README 中可以找到安装方式，这里记录一下
cmake .
make -j8
sudo make install

中间过程中遇到的一些，cmake的时候出问题，找不到一个依赖包
CM...]]></description><category></category></item><item><title><![CDATA[tar 打包问题]]></title><link>https://blog.youkuaiyun.com/Neil4/article/details/88561211</link><guid>https://blog.youkuaiyun.com/Neil4/article/details/88561211</guid><author>Neil4</author><pubDate>Thu, 14 Mar 2019 20:56:59 +0800</pubDate><description><![CDATA[项目中使用到 tar 文件，同一个 tar 文件解压之后在压缩，在程序执行的时候不能使用了
原因是 tar 对文件名长度有限制，当文件名过程的时候，使用 --format=ustar 进行压缩

...]]></description><category></category></item><item><title><![CDATA[s32v 开发板安装 apex 驱动]]></title><link>https://blog.youkuaiyun.com/Neil4/article/details/88534128</link><guid>https://blog.youkuaiyun.com/Neil4/article/details/88534128</guid><author>Neil4</author><pubDate>Wed, 13 Mar 2019 15:44:41 +0800</pubDate><description><![CDATA[安装驱动
首先要获取到 apex.ko 文件，这个应该是硬件厂商提供，执行下面命令安装
首先需要给 apex.so 文件加上可执行权限
insmod apex.ko

查看是否安装成功
执行下面命令，查看是否安装成功，如果安装成功，执行的结果中会有 apex
lsmod

使用测试程序测试
硬件厂商会提供测试程序，成功安装 apex 的设备可以通过测试程序测试结果

...]]></description><category></category></item></channel></rss>