自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

转载 内核模块和普通应用程序之间的差异

1、内核模块是操作系统内核的一部分,运行在内核空间;而应用程序运行在用户空间。2、内核模块中的函数是被动地被调用的,比如初始化函数和清楚函数分别是在内核模块被加载和被删除的时候调用,模块通常注册一些服务性质的函数供其它功能单元在之后调用,而其他应用程序则是顺序执行,然后通常进入一个循环反复调用某些函数。3、内核模块处于C函数库值下,自然就不能调用C函数库,(内核源码中会实现类似的函数);而...

2018-09-02 14:30:28 2031

原创 gdb的使用

1、编译的时候加上-g2、启动gdb:可以在gdb filename                        或者直接进入gdb后file filename。3、查看代码:l     (或者list)                            l  10           列出第10行为中心的代码                         l   10...

2018-08-09 11:10:24 954

原创 一个很有意思的程序

来源:牛客网int main(){  int a;float b,c;  scanf("%2d%3f%4f",&a,&b,&c);  printf("\na=%d,b=%d,c=%f\n",a,b,c);}若运行时从键盘上输入9876543210l,则上面程序在gcc编译器下的输出结果是:a=98,b=0,c=0.000000 这道题...

2018-08-06 21:47:37 1639

原创 利用ffmpeg的API进行推流项目框架

首先我们要确定我们要处理的对象,在用ffmpeg推视音频流的整个流程中,我们都需要围绕着输入AVFormatContext和输出AVFormatContext这两个结构体去处理。再者,我们需要两个结构体来指明输入输出视音频流的格式,即还需要一个AVInputFormat和AVOutputFormat。即以下这几个参数将会贯穿全文:AVFormatContext  *ifmt_ctx, *of...

2018-08-06 15:09:09 3460

原创 理解ffmpeg的几个相对重要的函数

致敬大神——本文内容来自雷霄骅的博客。总结此文主要是对 ffmpeg的细节有个深入的理解。首先回顾一下ffmpeg中最重要的几个结构体:AVFormatContext(统领全局,主要存储视音频封装格式中包含的信息)                     |------AVInputFormat(存储输入视音频使用的封装格式)                     |------...

2018-08-06 13:34:06 2850

原创 getopt函数笔记

来来来,走过路过不要错过~买一送四啦~~#include <unistd.h>int getopt(int argc, char * const argv[], const char *optstring);extern char *optarg;extern int optind, opterr, optopt;上一个项目经常接触的getopt函数,今天顺便总结了...

2018-07-26 20:29:53 1611 2

原创 程序的内存分区

主要分为5个区:1、栈区(stack):由编译器自己分配和释放,存放函数的参数值,局部变量的值等,存取的方法与数据结构学的栈差不多。2、堆区(heap):这个区的内存由程序员自己运用,分配与释放都需要程序员malloc和free,如果程序员申请了一块内存但是不释放,会造成内存泄漏,就只能等到程序结束后由系统回收。3、全局区/静态区(static):全局变量和静态变量是放在一块的,初始化...

2018-07-26 15:31:33 444

原创 循环缓冲区

这次需要记录之前了解到的参考自linux内核循环队列kfifo的循环缓冲区实现方法。1、循环缓冲区的实现依靠队列来实现,也就是分配一个数组来存储实际数据。2、对于一个循环缓冲区来说,我们需要关注的点有:①缓冲区大小应该设置多少?②缓冲区队头(in)、队尾(out)初始值?③缓冲区什么时候为空,什么时候为满?④如何表示缓冲区长度?⑤如何入队,如何出队?⑥如何处理索引值...

2018-07-26 09:55:46 4479

原创 交叉编译h323plus、ptlib和ffmpeg总结

一般来说,拿到一个源代码想要编译成源码库或者可执行文件,需要经过三个步骤:①./configure [--选项]②make③make install  1、配置configure想要让自己的代码在嵌入式板子上跑起来,最重要的也是最开始的步骤,就是在电脑搭建交叉编译环境,也就是说,板子要用到的源码库,都需要用交叉编译工具编译一遍。那么如何指定交叉编译工具呢?这里可以通过在编译的第...

2018-07-25 22:07:48 1178

原创 h323plus的simple执行过程中遇到的问题

经过./configure  ->  make  (->make install)这样一个过程之后,我们得到了一个执行文件。但是这一切都还没结束,一些大型源码的执行文件一般会依赖于很多动态库(也就是linux中的.so结尾的文件, .a结尾的为静态库),这些动态库有可能不在,但编译依然能通过,而导致的后果当然是执行文件无法正常运行,一般会报错说cannot find ***.so。...

2018-07-25 22:07:28 332

转载 【转】关于fopen和open

https://blog.csdn.net/oscarjulia/article/details/726380601、缓冲文件系统与非缓冲系统的区别缓冲文件系统(fopen):在内存为每个文件开辟一个缓存区,当执行读操作,从磁盘文件将数据读入内存缓冲区,装满后从内存缓冲区依次读取数据。写操作同理。内存缓冲区的大小影响着实际操作外存的次数,缓冲区越大,操作外存的次数越少,执行速度快,效率...

2018-07-25 17:28:02 2708

转载 关于音视频PTS/DTS知识点补充

https://www.cnblogs.com/wangguchangqing/p/5900426.html这篇博客讲得很详细。

2018-07-24 15:12:49 821

原创 源码太多,编译太慢了怎么办?

make -j4利用多条CPU流水线完事

2018-07-21 11:07:47 1370

原创 关于sudo、su、su -

之前因为权限和环境变量PATH问题,经常在编译的时候找不到编译工具。今天又了解清楚了一点,做一下笔记。1、su命令运行时默认切换到root权限,但是不会启动新shell,所以当前目录位置不会发生改变,也就是newpwd = oldpwd。2、su -命令运行时默认切换到root权限,同时生成启动shell,所以当前目录位置会变成root用户的home,也就是newpwd= /root。...

2018-07-21 10:31:54 259

原创 关于ubuntu下文件右下角有锁问题

很久没更了,期间很多东西需要记录的东西都没有记下来,好记性不如烂笔头,还是不能懒。#####################################################################之前把SDK中编译的uboot、kernel、根文件系统这些东西烧进去之后,现在需要把项目的库和demo全部交叉编译一遍,然后尝试着去把demo在板子上跑起来。由于SD...

2018-07-19 13:48:35 1769

原创 C标准函数库学习笔记

一、整型函数1、算数<stdlib.h>int abs(int value);    返回参数的绝对值。long int labs(long int value);     返回参数的绝对值(长整型)。div_t div(分子,分母);    返回一个div_t结构体,包含商和余数;ldiv(分子,分母);        与div类似,分子分母是长整型。2、随机数<stdlib....

2018-04-15 15:44:10 194

原创 const关键字与指针的总结

一、const的定义:const源自于英文单词constant,表示不变,用于修饰变量。二、const修饰指针变量: (const修饰普通变量太简单了,不讲) 只要有三种形式:①int const *p  const int *p 这两种形式等价,都声明了一个可以改变的指针变量(p的值可以改变),其指向的内容是不能改变的int型(*p不能被改变)。②in

2018-01-29 14:31:03 132

原创 NULL是什么

在c++中NULL被定义为0在c中NULL被定义为(void *)类型的0,也就是说指向0地址的指针

2018-01-29 14:01:43 1184

原创 参考资料书看来的关于野指针的看法

一、定义:野指针就是指针指向一个不确定的地址空间,或者说虽然指向了一个确定的地址空间,但是引用空间的结果却是不可预知的。二、野指针产生的原因:①使用指针之前,忘记了将指针变量初始化或者赋值为一个有效的空间地址,导致指向的不确定。②不清楚某些地址空间的访问权限,但是指针试图指向这些空间,并且按照不允许的权限操作。③访问空间时内存越界。eg:int buf[4] = {0}; 

2018-01-29 13:58:25 140

原创 数组、链表、结构体的适用情况

一般来说,一、数组:①数组的数据类型相同②数组的空间是连续的③数组的大小必须在定义时给出④数组名代表了这个数组的首地址二、结构体:①结构体中各个元素的数据类型不一定相同②向函数传递结构体时一般不会直接传递整个结构体变量,而是传递指向结构体的指针。③结构体变量名表示的是整个结构体变量。三、链表:①链表相当于一个结构体,只不过里面的元素分别代表的是链表的数据

2018-01-29 13:40:08 681

转载 关于静态库和动态库(基于linux)

库(Library)说白了就是一段编译好的二进制代码,里面包含可以供编程时直接使用的函数。从链接的方式上分,库分为静态库和动态库。一、区别①静态库即静态链接库(Linux 下的 .a)。之所以叫做静态,是因为静态库在编译的时候(静态库中所有代码)会被直接拷贝一份,复制到目标程序里,这段代码在目标程序里就不会再改变了。 静态库的好处很明显,编译完成之后,库文件实际上就没有作用了。目标

2017-12-29 14:15:29 231

原创 关于zlib安装时出现的错误

问题:将Makefile中的CC==gcc改为arm-hisiv500-linux-gcc后make出现以下错误:/usr/bin/ld: adler32.lo: Relocations in generic ELF (EM: 40)adler32.lo: error adding symbols: File in wrong formatcollect2: error: ld ret

2017-12-05 17:16:04 8022 2

转载 Hi3519V101_SDK_Vx.x.x.x 目录结构如下:

Hi3519V101_SDK_Vx.x.x.x 目录结构如下:        |-- sdk.cleanup                 # SDK清理脚本    |-- sdk.unpack                  # SDK展开脚本    |-- osdrv                       # 存放操作系统及相关驱动的目录    |   |-- ope

2017-12-05 00:27:35 624 1

原创 关于VMware tool安装过程中解压安装包失败的问题

解压时:tar: Exiting with failure status due to previous errors解决方法:另找一个安装包:通过百度云或者U盘的形式上传到ubuntu里解压后执行pl文件安装时除了第一个提示【no】要改成yes外,剩下的都按着提示做。

2017-12-04 22:09:09 2925

原创 交叉编译

所谓编译工具,就是将代码编译成可执行文件。与交叉编译工具相对应的,是本地编译。由于每块板子有其独有的编译方法,交叉编译,就是在电脑上用某个板子专用的编译工具编译代码生成可执行文件,需要注意的是,用板子专有的编译工具编译出来的执行文件,在电脑本地环境中并不能执行,需要传到板子上执行(可以使用nfs服务把代码文件以及执行文件映射到板子的系统上执行)。想要交叉编译工具安装到LINUX中,首先不用问都知...

2017-12-02 20:37:34 165

原创 U—boot的启动步骤笔记

一、汇编阶段1、设置为SVC(超级用户)模式,关闭中断、看门狗2、基本硬件设备初始化:时钟、串口、flash、内存(还有吗?)3、U-boot自搬移到内存二、C语言阶段1、大部分硬件初始化2、搬移内核到内存3、运行内核

2017-12-02 20:31:38 128

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除