Makefile 中:= ?= += =的区别 在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?我们来做个简单的实验新建一个Makefile,内容为:ifdef DEFINE_VRE VRE = “Hello World!”elseendififeq ($(OPT),define) VRE ?= “Hello World! First!”endififeq ($(...
undefine error 在linux中编译出现undefine error的错误,一般是由于两个原因,第一个是在编译选项中添加-D_GNU_SOURCE 另一个是由于gcc和g++混合编译出现的错误,需要使用:#ifdef __cplusplusextern "C"{#endif#include "log.h"#ifdef __cplusplus}#endif注意__cplusplus是两个下划...
system返回值 例:status = system("./test.sh");1、正确退出后。还需要再判断,操作成功或者操作失败。2、错误退出。1、先统一两个说法:(1)system返回值:指调用system函数后的返回值,比如上例中status为system返回值(2)shell返回值:指system所调用的shell命令的返回值,比如上例中,test.sh中返回的值为shell返回值。...
调用memcpy函数前未初始化缓冲区 3.9 调用memcpy函数前未初始化缓冲区代码示例int main(){ char buffer[10]; memcpy(buffer , "hello wo" , 3); printf("buffer=%s", buffer); return 0; } 现象&后果运行程序,发现buffer打印出的内容除了"he...
snprintf的使用 函数定义:int snprintf(char*str, size_t size,constchar*format, ...);函数说明:最多从源串中拷贝size-1个字符到目标串中,然后再在后面加一个0。所以如果目标串的大小为size的话,将不会溢出。函数返回值:若成功则返回欲写入的字符串长度,若出错则返回负值。返回值并不是真正写入字符串的大小。解释如下:size是限定...
dmesg 命令 dmesg 这个命令,Linux下用的还是比较多的。现在来详细看一下:Linux dmesg命令用于显示开机信息。kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息亦保存在/var/log目录中,名称为dmesg的文件里。一、语法dmesg [-cn][-s <缓冲区大小>]二、选项-c :显示信息后,...
浅谈内核的Makefile、Kconfig和.config文件 Linux内核源码文件繁多,搞不清Makefile、Kconfig、.config间的关系,不了解内核编译体系,编译修改内核有问题无从下手,自己写的驱动不知道怎么编进内核,不知道怎么配置内核,这些问题都和Makefile、Kconfig、.config有关,下面简单谈谈Makefile、Kconfig和.config。希望对你有启发。 三者的作用:简单来说就是去饭店点菜:Kconfig...
linux 14.04 下搭建gstreamer框架 首先搭建rtmp服务器:https://blog.csdn.net/qq_39759656/article/details/80311460 安装rtmpdump第二步 安装rtmpdump直接GIT安装。记得去你自己的目录下装。git clone git://git.ffmpeg.org/rtmpdump之后cd rtmpdump/makemake install...
ubuntu16.04安装Source Insigh 3.5 https://blog.csdn.net/warticles/article/details/80947095SI3US-205035-36448SI3US-466908-65897SI3US-368932-59383SI3US-065458-30661SI3US-759512-70207Source Insight 是一个功能强劲的程序编辑器,内置对C/C++,Java和x86...
时钟分频原理 - 时钟分频原理详解 时钟分频原理 如果cpu是计算机的大脑,电流是计算机的血液,那么时钟则是计算机的心脏,时钟频率决定了处理器运算的快慢,它的每一次“跳动”都驱动着处理器不停的执行命令。不同的是,人的各个部位心率是一样的,但计算机却有多个频率,而且每个部位可能有不同的频率,比如“大脑”有一个频率,“手“有一个频率,“脚”使用的是另外一个频率,这样就产生了两个问题:怎么产生这些不同的频率?处理器怎么与自己不同频率...
linux中export与source的作用 以前一直觉得export可有可无,虽然知道export是干嘛的,不就是把本地变量变成全局变量么(实际中叫环境变量),但是感觉好像没有这货也没影响,今天看了这篇博文,终于恍然大悟。用自己的语言,思维方式重新整理一遍首先说明两个概念:父shell与子shell,从shellA中启动一个shell,称之为shellB。 shellA为父shell,shellB为子shell。最容易理解的情况就是...
Linux下 ln 命令详解 这是linux中一个非常重要命令,请大家一定要熟悉。它的功能是为某一个文件或目录在另外一个位置建立一个同步的链接,类似Windows下的超级链接。链接文件分为软链接和硬链接。 软链接:软链接不占用磁盘空间,源文件删除则软链接失效。 硬链接:硬链接只能链接普通文件,不能链接目录。 使用格式:ln 源文件 链接文件 ln -s 源文件 链接文件这个命令最常用的参数是-s...
全局变量和局部变量初始化问题 变量需要不需要初始化是根据需要来进行的。全局变量有时也需要初始化,而局部变量其实大部分时间都没有初始化。不要把赋初值与初始化混淆了:初始化是由编译器做的,形成可执行文件后,那些变量的值就在软件文件中放着,执行程序时直接使用了;而赋初值是由C/C++代码实现的,程序开始执行后才给变量赋的值。只是全局变量如果不显式初始化,那么编译时由编译器自动初始化为0,而编译器对局部变量是否有值视而不见,所以在...
ko && lsmod 各类文件的区别与作用:1、对于.so文件 .so文件是用户层的动态链接库,用于用户层的动态链接使用,内核态的代码同样不能直接访问。2、对于.ko文件 .ko文件是内核态的动态链接库,用于内核态的动态链接使用,可以用于内核之间的模块相互调用。用户态的代码不可直接调用内核态的代码,但是可以通过其他方式进行通信。3、对于.a文件 .a文件是用于静态链接时,使...
linux下多线程编程 https://www.jb51.net/article/125605.htm我们在写linux的服务的时候,经常会用到linux的多线程技术以提高程序性能 多线程的一些小知识:一个应用程序可以启动若干个线程。线程(Lightweight Process,LWP),是程序执行的最小单元。一般一个最简单的程序最少会有一个线程,就是程序本身,也就是主函数(单线程的进程可以简单的认为...
linux 之互斥锁 为什么需要互斥锁?在多任务操作系统中,同时运行的多个任务可能都需要使用同一种资源。这个过程有点类似于,公司部门里,我在使用着打印机打印东西的同时(还没有打印完),别人刚好也在此刻使用打印机打印东西,如果不做任何处理的话,打印出来的东西肯定是错乱的。 下面我们用程序模拟一下这个过程,线程一需要打印“hello”,线程二需要打印“world”,不加任何处理的话,打印出来的内容会错乱: [cpp]vie...
gdb调试coredump(使用篇) 看到一个非常好的介绍coredump的文章,做个记录,参考链接:https://blog.csdn.net/sunxiaopengsun/article/details/72974548什么是coredump Coredump叫做核心转储,它是进程运行时在突然崩溃的那一刻的一个内存快照。操作系统在程序发生异常而异常在进程内部又没有被捕获的情况下,会把进程此刻内存、寄存器状态、运行...
避免野指针&&间接赋值 /**************************避免产生野指针的三个步骤。1.定义指针时候,初始化为NULL2.释放指针所指向的内存空间的时候,判断是不是NULL,避免重复释放。3.释放指针所指向的内存空间后,把指针重置为NULL。************************/int main01(){ int *p =NULL; P = (int *)m...
字符串反转&&char *p 和char a[]区别 字符串反转函数int main03(){ char buff[] = "qwertyuio"; char *p = buff; char *p1 = buff + strlen(buff) -1; printf("p1:%s",p1); while(p < p1) { char c = *p; *p = *p1; *p1 = c; ...
Linux下Makefile中动态链接库和静态链接库的生成与调用 转载地址:https://blog.csdn.net/u011964923/article/details/73297443背景:写这篇博客的原因是:最近在搞嵌入式,需要交叉编译opencv库文件,自己写Makefile,通过arm-linux-g++编译、链接、生成可执行文件,从而实现了移植的过程。平台是Toradex的Apalis TK1,三千多元,买回来我就后悔了,全是英文资料,还各种B...