- 博客(43)
- 收藏
- 关注
原创 解决'配置,编译glib-2.26.1库'错误.
1.序 之所以不选最新的glib库,而选glib-2.26.1库,是有原因的,第一最新库依赖的库文件太多,编译出来库文件太大,不太适合flash空间有限的嵌入式设备. 但是在configure ’ glib-2.26.1 ’ 库的时候,碰到了许多问题。此博客记录这些问题及解决方法。 ./configure 出问题,还得找根本原因,看脚本.而configure文件则是autoconfig 自
2018-01-02 23:06:37
1809
原创 利用C语言"位域"的特殊性来对数组进行边界检查
1.序 数组越界时常有发生,如果我们能够让编译器提醒我们犯错那是最好。2.例子#include <stdio.h>#include <stdlib.h>#define ARRAY_CARDINALITY(Array) (sizeof(Array) / sizeof(*(Array)))#undef YIN_VERIFY#define YIN_VERIFY(name,cond) stat
2017-12-06 10:31:16
1139
1
原创 完美解决编译缺少文件,apt-file search 命令去查找依赖。
1.序 在交叉编译过程中如果碰到少了什么头文件之类的报错,最好是使用 apt-file search 命令去查找依赖。2.命令 比如: apt-file search /netlink/genl/genl.hwpa_supplicant$ apt-file search /netlink/genl/genl.hlibnl-3-dev: /usr/include/libnl3/netli
2017-11-28 15:39:41
3752
2
原创 应用程序——链接脚本
1.序 应用程序也可以像内核一样按照一定规则的组织模块。通过链接脚本就可以做到。2.查看默认链接脚本 没有链接脚本,程序也是不知道如何在内存当中进行组织的。只不过一般情况下,做应用的程序员不 需要关心而已。leon@netview:~$ leon@netview:~$ ld --verboseGNU ld (GNU Binutils for Ubuntu) 2.24 Sup
2017-11-27 17:23:02
838
原创 sed 命令
在makefile 含有 default 行,将libtommath.a 替换为 libtommath.a libtommath.sosed -i '/default/s/libtommath.a/libtommath.a libtommath.so/' makefile在makefile第49行添加 DLIBNAME=libtommath.so:sed -i '49i DLIBNAME=lib
2017-11-24 11:24:34
393
原创 查看可执行程序(ELF)或动态库所依赖动态库——ldd脚本分析
1.序 搞清可执行程序(动态库)所依赖的动态库信息是非常有帮助的。2.查看方法系统信息:Linux netview 4.4.0-101-generic #124~14.04.1-Ubuntu SMP Fri Nov 10 19:06:11 UTC 2017 i686 i686 i686 GNU/Linux2.1 使用 ldd# ldd `which gdb`linux-gate.so.1 =>
2017-11-24 09:56:25
7588
原创 shell脚本中,子串匹配的例子
1.脚本文件name="dbus"for i in `find ./ -maxdepth 1 -type d`do dirname="$(echo `basename $i`)" echo $dirname if [[ "$dirname" == *$name* ]] ;then echo "yes"
2017-11-22 18:09:21
680
原创 关于NFS挂载问题——NFS failed: Protocol not supported
1.序 这几天在调试海思板子的时候,刚好长城宽带断网了,之后局域网还是能用的,使用NFS把Ubuntu某个共享目录到单板上,是可以的。长城宽带几天不好,服务态度极差,无力吐槽. 第二天就换了电信宽带,还送了个电信千兆光猫.价钱确实是贵了,但是可以愉快的上网了,根据装宽带师傅的吩咐,使用了千兆口接路由器的WLAN口.2.挂载NFS 晚上,愉快的使用网络,同时打开单板,发现挂载不上NFS了。这
2017-11-17 23:13:34
39657
5
原创 GCC选项——不使用默认系统库函数及不搜索默认头文件路径
1.序 在某些特殊情况,不需要使用系统自带的库及头文件(比如使用GCC编译实时系统时),那么就需要指定参数,不去搜索默认路径及库文件。2.命令选项 -nostdinc 不搜索默认路径头文件-nostdinc Do not search the standard system directories for header fles. Only the directories yo
2017-11-17 09:02:01
11860
原创 查找系统定义size_t , va_list , va_start , va_end 等不常见宏(变量)头文件所在
1.序在创建一个新项目时,往往我们会使用到如: size_t , va_list , va_start , va_end ,false , true 等不常见宏(变量),经常会报错,说未定义。而这些宏(变量)又不是在标准的glibc库当中实现的,而是gcc中实现/定义。使用man命令压根找不到信息,这里我们需要一点技巧。2.例子这里写代码片
2017-11-10 16:00:16
1222
原创 项目经验之谈 —— 利用编译器及C语言特性<位域>进行内存边界检测
1.前言2.校验3.源码#include <unistd.h>#include <stdio.h>#include <fcntl.h>#include <sys/wait.h>#include <sys/stat.h>#include <sys/types.h>#include <getopt.h>#include <stdlib.h>#include <string.h>#defi
2017-03-17 15:44:53
1061
原创 项目经验之谈--栈破坏 -- 案例二
1.前言前一篇 《项目经验之谈–栈溢出》 已经写到过栈破坏从来导致的程序崩溃问题,这次在项目中又发现此类似BUG。故此再记录下来,谨记下次再犯。2.项目需求通过二维码扫描配置camera ID,然后程序就崩溃了。项目需求不是紧要的,这里不多累赘。3.代码以下代码为出问题的函数static void trigger_callback(NV_HANDLE handle, NV_S32 fd, void
2017-03-01 09:14:31
8163
原创 Linux命令 -- sed命令,去除指定字符 ---- ()\-等等
1.命令echo "(hello\) main --- wrd" | sed 's/[()\-]//g'
2017-01-05 14:39:34
6732
原创 Linux命令 -- 获取 进程信息:name 、stat 、PID
以 kthreadd 进程为例1.命令⑴ 第一种方式换行输出:echo `ps | grep -v grep | grep kthreadd | sed 's/\/bin\/sh//' | awk '{print $4, $1}' | sed 's/\(^.*\/\)\(.*\)/\2/' | grep kthreadd && cat /proc/$(pgrep kthreadd | se
2017-01-05 10:43:25
1926
原创 命令组合-- 获取Linux某进程的运行状态
1.前言获取Linux进程状态的方式有很多种.这里讲两种.2.命令行2.1 第一种情况这种情况使用以下命令即可得出结果:# ps | grep -v grep | grep init | awk '{print $4}'2.1 第二种情况发现少了一列 STAT ,而我们又需要这一列。使用以下命令行:# cat /proc/1/stat这种方式也可以获取状态值。命令行(以下两种方式都可以):# c
2017-01-05 09:38:38
543
原创 将某个目录下所有ko文件反汇编
1.命令 for i in `ls *.ko`; do objdump -D $i > $i.dis; done
2016-11-24 14:21:40
5098
原创 Linux 内核资源限制 -- 栈限制
1.序言今天某同事突然问我:我在Linux上写了一个测试程序,在函数内部定义了一个很大的数组,一运行就 Segmentation fault. 当时一想肯定是栈溢出了。其实这样说也不准确,还是决定去看内核代码,其实内核对用户进程是有资源限制的。2.task_struct既然是跟进程相关,那么首先得想到进程相关的数据结构task_struct,查找资源限制相关的结构,task_struct里
2016-11-19 09:49:43
1384
原创 OSD叠加到视频流
1.OSD叠加原理文字、图片、视频显示的原理,无非就是描点(像素)。显示屏是发光二极管组成。俗称点阵。2.原理图3.处理流程⑴text文本段⑵从字库中找出相应文字的点阵⑶描点(将文字二进制数据转换成pixel值,存到canvas)⑷查找颜色索引(取出canvas像素值 与 CLUT进行匹配)⑸存储index值到显存(areaStart)⑹设置参数,后面的事情就交给底层处理
2016-10-16 21:21:39
5575
原创 输出警告/错误信息到SecureCRT终端
1. 命令leon$ make clean && make all 2>&1 | grep "warning"2. 示例
2016-10-11 17:27:33
791
原创 Linux命令组合 -- 将make all 编译错误信息重定位到管道输出
1.命令leon$ make clean && make all 2>&1 | grep "error"2016-10-10 18:49:36 (nvc-communication)==>|| INFO : Clean project nvc-communication ...rm -rf ./build/objs/* ./build/lib/* ./build/bin/*2016-10-1
2016-10-10 18:55:03
1665
原创 Linux命令 -- 提取字符串指定字符串之间的字符串
1.例子 提取字符串以下字符串 error: 与 : 之间的子字符串。并消除空格。"src/network/misc/nv_net_udp.c:17: fatal error: nv_net_tools.h: No such file or directory"2.命令echo "src/network/misc/nv_net_udp.c:17: fatal error: nv_net_tools
2016-10-10 17:59:11
19837
1
原创 替换某个目录下.c文件内容
1. 找出所有.c文件leon$ find ./ -maxdepth 3 -type f | grep "\.c"./misc/nv_net_udp.c./nv_comm_system.c./util/nv_report_event.c./util/nv_linklist_connect_info.c./transport/net_udp.c./transport/net_tcp.c.
2016-10-09 17:03:08
467
原创 Linux命令-dirname、basename
1. 例子leon$ find ./ -maxdepth 3 -type f./misc/nv_misc_pub.h./util/nv_util_pub.h./common/nv_common_pub.h./camera/nv_camera_pub.h./nv_communication.h./transport/nv_transport_pub.h./log/nv_log_pub.h
2016-10-08 15:24:04
2252
原创 Linux命令 - 去掉空格、去掉多余空格、大小写转换、打印列
1.空格 ⑴去掉空格leon@netview:~$ dateFri Sep 30 14:30:55 CST 2016leon@netview:~$ date | sed s/[[:space:]]//gFriSep3014:31:50CST2016⑵去掉多余空格leon@netview:~$ echo "hello world" | tr -s [:space:]hello world
2016-09-30 14:42:26
18377
原创 Linux命令 -- find 搜索深度
1.前言 在编译当中经常需要通过-I 来指定头文件搜索路径。2.命令-maxdepth <number> ; number 指定搜索深度.find ./ -maxdepth 3 -type d ! -name '.git' -a ! -name 'build' -a ! -name 'deps' -a ! -name 'patches'3.执行结果././openssl./nvc
2016-09-29 16:59:06
15744
原创 查找ko文件中text段的某个函数名
1.前言 目的是找到ko_hi3518目录下某个ko文件中是否存在某个函数定义的地方。 如:查找CMPI_CreateProc是在哪个驱动文件中实现的。2.ko_hi3518目录acodec.ko hi3518_ai.ko hi3518_group.ko hi3518_rc.ko hi3518_vda.ko hidmac.ko
2016-09-28 10:15:01
3514
原创 Linux命令 -- 将某个文件中的字符串小写字母全部转为大写字母
1.前言 有时候要将某个文件字符串进行大小写转换,这条命令还是很方便.2.脚本 将 test.txt 文本中字符串的小写字母全部转为大写字母,另存为 result.txtecho ` cat test.txt | tr '[:lower:]' '[:upper:]' ` > result.txt
2016-09-09 19:27:16
10382
原创 位置相关(无关)码 浅谈
1.前言 在嵌入式开发当中.往往会听到一个概念:代码重定位.2.重定位3.位置相关/无关码 ⑴位置相关码 ⑵位置无关码4.可重入函数
2016-08-30 11:32:38
598
原创 Windows 与 Ubuntu 实现共享
1.前言 在开发当中,往往为了方便阅读代码,而需要实现Windows与Linux server之间的文件共享。2.共享 ⑴共享Windows目录 ⑵挂着Windows到Linux serversudo mount -t cifs -o username=leon,password=123,file_mode=0777,dir_mode=0777 //192.168.0.99/l
2016-08-30 11:23:56
581
原创 source insight 使用
1.前言 工欲善其事必先利其器。source insight 在阅读大工程代码时,无疑是神器。 这里介绍source insight 的 两个比较好用的功能。2.功能增加 ⑴在代码当中插入注释 ①打开base工程 ②插入脚本 ③脚本内容//add by leon 2015-10-12// insert current datemacro M
2016-08-30 10:43:41
808
原创 多个shell命令组合
1.概述 在项目开发中,会依赖许多标准库或者头文件。而我们又不知道该库在哪个路径下面,我们可以使用某些编译器所自带的属性来操作。2.命令 ⑴首先 man gcc ,然后 /print ...skipping... -femit-struct-debug-reduced -femit-struct-debug-detailed[=spec-list]
2016-08-26 09:40:49
951
原创 面向对象编程之C库函数 -- strcpy , memcpy , strdup 之区别
1.概述2.函数原型 char* strcpy(char* des,const char* source) void *memcpy(void *dest, const void *src, size_t n); extern char *strdup(char *s);
2016-08-25 12:58:39
1011
原创 批量建立软链接
批量建立软链接 例如以下三个文件: arm-hisiv100-linux-uclibcgnueabi-addr2line arm-hisiv100-linux-uclibcgnueabi-gcc arm-hisiv100-linux-uclibcgnueabi-objcopy**建立软链接如下:**arm-linux-addr
2016-08-24 15:36:58
1846
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人