c linux
文章平均质量分 79
yebanguhe
这个作者很懒,什么都没留下…
展开
-
指针数组与数组指针详解
指针数组与数组指针详解1.什么是指针数组和数组指针? 指针数组:指针数组可以说成是”指针的数组”,首先这个变量是一个数组,其次,”指针”修饰这个数组,意思是说这个数组的所有元素都是指针类型,在32位系统中,指针占四个字节。 数组指针:数组指针可以说成是”数组的指针”,首先这个变量是一个指针,其次,”数组”修饰这个指针,意思是说这个指针存放着一个数组的首地址,或者说这个指针指向一个数组的首地址。 根据上面的解释,可以了解到指针数组和数组指针的区别,因为二者根本就是种类型的变量。...原创 2021-06-16 10:58:19 · 1062 阅读 · 0 评论 -
解析配置文件
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <fcntl.h>#include <sys/ioctl.h>#include <linux/types.h>#include <dirent.h>#include <errno.h>#include <sys/原创 2021-05-27 14:33:54 · 348 阅读 · 0 评论 -
解析字符串代码
解析如下字符串 {(0x84c,0x33);(0x850,0x3);(0x854,0x3);}void am335_usr_pinmux(void){ char *pinmux = getenv("pinmux"); int i;#if 0 for(i=0x800;i<0xa38 ;) { printf("addr:%x is %x\n",i,__raw_readl(i+0x44e10000));...原创 2021-05-27 13:53:05 · 268 阅读 · 0 评论 -
2020-11-09
学了结构体很久了,以为自己能够很熟练了,今天发现自己今天成员运算符 (.) 和指向运算符(->) 之间竟然犹豫了其实成员运算符是结构体变量访问成员是用的。而指向运算符则是结构体指针访问成员时使用的,因为一直都是再用结构体指针,突然用结构体变量,使用了指向运算符,看了半天才看出来,当然结构体指针也可以使用成员运算符但需要先取值,但一般没人这么用,我一直是这样认为 你对基础的掌握程度,决定着你能走多远与结构体一起出现的一般还有动态内存分配(栈里开辟内存),需要我们注意的是作用域,和传值传地址举转载 2020-11-09 13:31:16 · 143 阅读 · 0 评论 -
#、##、__VA_ARGS__的使用
使用打印信息的接口时,经常见到__VA_ARGS__和##__VA_ARGS__这两个字符串,花时间学习下这部分的知识,发现还有#和##这两个比较有意思的字符串,记下他们的用法:#: 用来把参数转换成字符串;例: #include <iostream> #define LOG(x) do { printf("%s=%d\n",#x,x); }while(0) int main() { int score = 96; ...转载 2020-10-24 13:05:05 · 717 阅读 · 0 评论 -
函数指针和指针函数
直接看代码void(*f[])(char*)这个是个什么东西?我们先看看下面的东西函数指针和指针函数的定义我们看个代码int*func(inta,intb)我们之前说过运算符的优先级,「 *」 的优先级低于「( 」由于「 * 」的优先级低于「()」的优先级,因而func首先和后面的「 () 」结合,也就意味着,func是一个函数。即:int*(func)(inta,intb)然后这个函数的返回值的类型是「 int *」 即:指...转载 2020-08-27 08:50:42 · 183 阅读 · 0 评论 -
执行linux 命令行程序not found 错误
最近在做tcu 的项目,重新移植了文件系统。运行客户的提供的程序报错:和客户沟通,交叉编译工具版本是一致的,感觉是缺少动态库用dd命令查看,但是这ldd无法显示,developer-RH2485-V2:$ ldd qrencode not a dynamic executable在网上看了看 ,找到了一种方式 使用readelfreadelf -l qrencode | grep ld-linux [Requesting program interpret...原创 2020-05-28 10:34:10 · 1338 阅读 · 0 评论 -
深入 理解char * ,char ** ,char a[ ] ,char *a[] 的区别
C语言中由于指针的灵活性,导致指针能代替数组使用,或者混合使用,这些导致了许多指针和数组的迷惑,因此,刻意再次深入探究了指针和数组这玩意儿,其他类型的数组比较简单,容易混淆的是字符数组和字符指针这两个。。。下面就开始剖析一下这两位的恩怨情仇。。。 1 数组的本质 数组是多个元素的集合,在内存中分布在地址相连的单元中,所以可以通过其下标访问不同单元的元素。。 2 指针。 指针...转载 2019-11-22 16:59:33 · 141 阅读 · 0 评论 -
Linux下如何模拟按键输入和模拟鼠标
查看/dev/input/eventX是什么类型的事件, cat /proc/bus/input/devices 设备有着自己特殊的按键键码,我需要将一些标准的按键,比如0-9,X-Z等模拟成标准按键,比如KEY_0,KEY-Z等,所以需要用到按键模拟,具体方法就是操作/dev/input/event1文件,向它写入个input_event结构体就可以模拟按键的输入了。 linux/in...转载 2019-11-19 13:39:31 · 525 阅读 · 1 评论 -
【Linux】动态库和静态库
Linux操作系统中,依据函数库是否被编译到程序内部,将其分为两大类,静态函数库和动态函数库。Linux下的函数库放在/lib或/usr/lib,头文件放在/usr/include。在既有静态库又有动态库的情况下,默认使用动态库,如果强制使用静态库则需要加-static选项支持。关于静态库1.拓展名通常为libxxx.a。2.静态库在编译时会直接整合到执行程序当中,因此用...转载 2019-07-24 10:21:53 · 86 阅读 · 0 评论 -
Linux下C程序执行shell命令并获取返回结果的方法
Linux下的C编程有以下几种方法可以执行shell命令 system()函数 exec函数簇 popen()函数如果还需要获取返回结果,有两种较简单方便的方法 popen()函数 匿名管道1.system()函数所需头文件:#include<stdlib.h>函数原型:int system(const char *cmdst...转载 2019-03-29 10:55:39 · 1271 阅读 · 0 评论 -
wpa_supplicant-2.6源码交叉编译
源码下载官网:https://w1.fi/releases/libnl-1.1.4交叉编译:./configure CC=xx-gcc \--prefix=/home/xx/openspurce/wpa_s_2_6/opensrc/release \--sysconfdir=/home/xxx/openspurce/wpa_s_2_6/opensrc/release --host=...转载 2019-01-21 11:10:26 · 222 阅读 · 0 评论 -
setenv与putenv的区别 .
putenv与setenv的区别:putenv可以使用程序中已定义,且值形如"name=value"的字符串变量作为函数的实参。此时,系统将不再为该环境变量分配内存,使用的是程序中定义变量的内存,而是将该字符串的变量地址保存在环境中。因此该变量应该定义为全局变量,以防止该函数推出以后导致环境变量不可用。[cpp] view plaincopyprint?转载 2015-06-01 16:02:32 · 1097 阅读 · 0 评论 -
make clean、 make mrproper、make distclean的区别 .
内核编译时, 到底用make clean, make mrproper还是make distclean在编译内核时, 被make clean, make mrproer 和 make distclean搞的纠结, 稍微总结一下这三者之间的区别:解压内核源码包后, 到内核源代码目录树的顶层目录, 执行# make helpCleaning targets:clean转载 2015-06-30 10:13:42 · 1401 阅读 · 0 评论 -
linux C 遍历目录及其子目录 opendir -> readdir -> closedir .
1 在linux下遍历某一目录下内容LINUX下历遍目录的方法一般是这样的2 打开目录->读取->关闭目录3 相关函数是opendir -> readdir -> closedir,其原型如下:4 #include 5 DIR *opendir(const char *dirname);6 struct dirent *readdir(DIR *dirp);7 int cl转载 2015-06-30 09:56:28 · 429 阅读 · 0 评论 -
文件操作opendir()/readdir()/closedir()/stat() .
头文件:#include#include在Linux下opendir()、readdir()和closedir()这三个函数主要用来遍历目录。int stat(const char *restrict pathname, struct stat *restrict buf);提供文件名字,获取文件对应属性。opendir():函数原型:DIR * ope转载 2015-06-30 09:58:28 · 1537 阅读 · 0 评论 -
关于Linux下串口通信的一点心得
1. 打开串口 与其他的关于设备编程的方法一样,在Linux 下,操作、控制串口也是通过操作起设备文件进行的。在 Linux 下,串口的设备文件是 /dev/ttyS0 或/dev/ttyS1 等。因此要读些串口,我们首先要打开串口: char *dev = "/dev/ttyS0"; // 串口1 i转载 2015-12-24 14:54:37 · 503 阅读 · 0 评论 -
在Linux下如何使用GCC编译程序、简单生成静态库及动态库
在Linux下如何使用GCC编译程序、简单生成静态库及动态库。 本文适用于Linux下开发初学者。本文初步讲解在Linux下如何使用GCC编译程序、简单生成静态库及动态库。一、关于安装。一般系统默认是安装好编译器的,并且网络上有大量资料介绍不同发行版本下的安装问题,本文不再描述。二、C编程中的文件后缀名介绍 .a 静态库(打包文件) .c 未经过预处转载 2016-04-07 14:44:31 · 419 阅读 · 0 评论 -
g++ 编译出现glibc detected 错误
*** glibc detected *** free(): invalid pointer:*** glibc detected *** malloc(): memory corruption:*** glibc detected *** double free or corruption (out): 0x00000000005c18a0 ****** glibc detected转载 2016-09-07 14:36:14 · 2071 阅读 · 0 评论 -
fd_set 的用法
select()函数主要是建立在fd_set类型的基础上的。fd_set(它比较重要所以先介绍一下)是一组文件描述字(fd)的集合,它用一位来表示一个fd(下面会仔细介绍),对于fd_set类型通过下面四个宏来操作: fd_set set; FD_ZERO(&set); /* 将set清零使集合中不含任何fd*/转载 2016-09-07 14:39:39 · 3612 阅读 · 0 评论 -
select 用法
分类: LINUX阻塞方式block,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回。使用Select就可以完成非阻塞non-block,就是进程或线程执行此函数时不必非要等待事件的发生,一旦执行肯定返回,以返回值的不同来反映函数的执行情况,如果事件发生则与阻塞方式相同,若事件没有发生则返回一个代码来告知事件未发生,而进程或...转载 2016-09-07 14:42:45 · 372 阅读 · 0 评论 -
c程序中出现segment error 和 bus error 的原因
在c程序中,经常会遇到段错误(segment error)和总线错误(bus error),这两种问题出现的原因可能如下 段错误: 对一个NULL指针解引用。 访问程序进程以外的内存空间。 实际上,第一个原因可以规约到第二个原因,在一个c程序的虚拟内存空间中,从低地址到高地址一次是代码区,堆区(向上增长),栈区(向下增长),最上是常量区,转载 2016-09-07 14:47:04 · 3042 阅读 · 0 评论 -
Linux 静态库与动态库搜索路径设置
原文地址:http://blog.csdn.net/jaylong35/article/details/6132087 库文件在连接(静态库和共享库)和运行(仅限于使用共享库的程序)时被使用,其搜索路径是在系统中进行设置的。一般 Linux 系统把 /lib 和 /usr/lib 两个目录作为默认的库搜索路径,所以使用这两个目录中的库时不需要进行设置搜索路径即可直接使用。对于处...转载 2018-09-20 10:15:22 · 859 阅读 · 0 评论 -
Linux下创建、查看、提取和修改静态库(*.a)
先说明一点,静态库文件是由多个目标文件打包而成的,在windows下静态库文件的后缀是.lib,而在linux下静态库文件的后缀是.a(a是archive的缩写,也就是文档文件)。 废话少说,下面直接进入主题。 1.创建两个c文件:addition.c 和 multiplication.caddition.c1 //addition.c2 int addition (i...转载 2018-09-20 10:24:15 · 1878 阅读 · 0 评论 -
drm直接画图
#define _FILE_OFFSET_BITS 64#include <inttypes.h>#include <stdio.h>#include <stdlib.h>#include <sys/mman.h>#include <xf86drm.h>#include <xf86drmMode.h>#inclu...转载 2018-10-31 10:41:14 · 623 阅读 · 0 评论 -
getenv putenv setenv和unsetenv详解 .
getenv:定义函数char * getenv(const char *name);表头文件#include 函数说明getenv()用来取得参数name环境变量的内容。参数name为环境变量的名称,如果该变量存在则会返回指向该内容的指针。环境变量的格式为name=value。转载 2015-06-01 16:00:37 · 583 阅读 · 0 评论