
linux系统
文章平均质量分 62
虎皮猫大人王
这个作者很懒,什么都没留下…
展开
-
linux下jsoncpp编译
折腾了一顿,我使用ubuntu16.04编译的jsoncpp,由于使用的芯片工程需要16.04,无法使用最新的ubuntu系统。然后在交叉编译时,在CMakeLists.txt中把test配置为off,可以交叉编译成功了。编译时出这个错的原因是由于cmake版本太低了,我把cmake版本升级到了。发现jsoncpp编译时,可以cmake成功。原创 2025-01-23 09:07:53 · 346 阅读 · 0 评论 -
linux软件框架中间件选择(GDbus与FDbus)
linux 架构设计技术栈原创 2025-01-13 23:14:52 · 391 阅读 · 0 评论 -
JT/1078音视频传输协议开发指南
看到一篇文章:JT/1078音视频传输协议开发指南https://www.hentai.org.cn/article?id=8写的不错,记录下来。原创 2021-06-30 11:07:03 · 1902 阅读 · 0 评论 -
Ubuntu下安装 apache2 + php5 + mysql
1. 安装运行环境sudo apt-get install apache2sudo apt-get install mysql-serversudo apt-get install php5-common sudo apt-get install php5-gdsudo apt-get install php5-mysqlsudo apt-get install libapache2-mod-原创 2012-02-01 15:34:03 · 501 阅读 · 0 评论 -
linux文件系统
基本的文件系统体系结构Linux 文件系统体系结构是一个对复杂系统进行抽象化的有趣例子。通过使用一组通用的 API 函数,Linux 可以在许多种存储设备上支持许多种文件系统。例如,read 函数调用可以从指定的文件描述符读取一定数量的字节。read 函数不了解文件系统的类型,比如 ext3 或 NFS。它也不了解文件系统所在的存储媒体,比如 AT Attachment Packet原创 2012-01-07 08:49:38 · 475 阅读 · 0 评论 -
linux启动过程
启动第一步--加载BIOS当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了。启动第二步--读取MBR众所周知,硬盘上第0磁道第一个扇区被称为MBR,也转载 2012-01-07 08:50:21 · 456 阅读 · 0 评论 -
Linux 平台上的软件包管理
简介: 安装,升级和卸载应用软件是影响用户对操作系统评价的决定性因素之一。对于日渐流行的 GNU/Linux 操作系统,拥有简洁强大的软件包管理机制功不可没。本文从基本的 rpm/dpkg 命令行出发,以 RHEL 和 UBUNTU 为例,介绍典型 Linux 系统中应用软件的管理和使用。RPM/DPKG 两大阵营简介在 GNU/Linux( 以下简称 Linux) 操作系转载 2012-01-10 16:05:29 · 885 阅读 · 0 评论 -
uboot启动过程
u-boot(universal bootloader)是德国DENX小组开发的用于多嵌入式CPU的bootloader程序,遵循GPL条款。以s3c2410为例Uboot的启动过程大体可分为两个部分,第一部分是初始化系统为第二部分做准备,多用汇编实现,第二部分实现外围设备的初始化和内核的下载及参数的传递,开始用C实现。Uboot启动后的内存分配情况。原创 2012-01-07 08:50:00 · 766 阅读 · 0 评论 -
linux系统中断
异常体系比较复杂,但是linux已经准备了很多的函数和框架,但是因为中断是和具体的开发板相关,所以中断需要我们自己来处理一些方面,但是这也是很少的一部分,很多公用的处理函数内核已经实现,linux内核搭建了一个非常容易扩充的中断处理体系。中 断系统结构涉及的方面很多,而且分布在很多的函数中,这里我主要理清一些结构和流程顺序已经在哪些函数中实现,我不知道其他人怎么样?但是我自己一开始怎 是找不到原创 2012-01-07 08:51:36 · 540 阅读 · 0 评论 -
send,recv,sendto,recvfrom
send函数 int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。该函数的第一个参数指定发送端套接字描述符;第二个参原创 2011-12-27 19:05:29 · 668 阅读 · 0 评论 -
do while(0)的作用
do while(0)的作用基本有两种:1,省略掉多个goto语句,变为break. 在使用多个goto出错处理中,过多的goto语句,使程序可读性变差。用do while(0)可以简化一下。 说实话,上面这句话是抄的。因为do while(0)更多的用在宏定义中,在linux内核中,很少用do while(0)来实现出错处理。 do while(0)最多原创 2011-12-16 13:01:13 · 705 阅读 · 0 评论 -
把系统函数替换掉,就重新写一个与标准库相同的函数.
由于调用系统的库不行,那么要调用自己写的函数库,有多种方法.1,自己写一个sharelib2,使用preload我们写下面一段例程:/* 文件名:verifypasswd.c *//* 这是一段判断用户口令的程序,其中使用到了标准C函数strcmp*/ #include stdio.h> #include string.h> int main(int argc, c原创 2011-12-08 10:15:49 · 1826 阅读 · 0 评论 -
网口插拔,调用标准的socket IOCTL失败.
经过我对网口插拔的总结,发现很多平台不支持网口socket的ioctl失败.跟踪内核代码发现,内核中的网口驱动大多写的不完善.就拿最近用过的两个平台做例子吧.第一个平台,是在驱动检测到网口的插上或者拔掉之后,没有操作netif_carrier_o(dev)与netif_carrier_off(dev)第二个平台,就更过份了.直接就是没有把ioctl的结构体没有添加上去.例如,检原创 2011-12-08 09:42:30 · 1103 阅读 · 0 评论 -
uboot如何向kernel传参数
U-BOOT 在启动内核时,会向内核传递一些参数.BootLoader 可以通过两种方法传递参数给内核,一种是旧的参数结构方式(parameter_struct),主要是 2.6 之前的内核使用的方式。另外一种就是现在的 2.6内核在用的参数链表 (tagged list) 方式。这些参数主要包括,系统的根设备标志,页面大小,内存的起始地址和大小,RAMDISK的起始地址和大小,压缩的RAMDI原创 2012-01-07 08:50:52 · 1312 阅读 · 0 评论 -
typeof在linux中妙用
今天偶然又看到了typeof这个东西,只知道它大概是返回变量的类型,后来上网查了下发现这个关键字在linux中用的非常多, 这里大概叙述了typeof是一个什么东西,怎么用,实际上可以用简单的话来重述。如果你对sizeof很熟悉的话,那么大可进行类推,sizeof(exp.)返回的是exp.的数据类型大小,那么typeof(exp.)返回的就是exp.的数据类型。值得注意的是在上面的话里我们可以看原创 2012-01-05 20:01:42 · 523 阅读 · 0 评论 -
close fclose 的句柄一定要存在吗?
记得在测试程序close 或者fclose NULL时,系统会提示出错,我曾经确认过。系统在close(NULL),或者fclose(NULL)时,系统是不会出警告或者错误信息的。原创 2012-02-15 10:51:12 · 1393 阅读 · 0 评论 -
socket accept失败
原因很简单:connfd = accept(listenfd,(sockaddr *)&clientaddr,&clilen);、中的第三个参数,没有初始化。而传递进accept时,估计给判断失败了。初始化一下:socklen_t clilen= sizeof(struct sockaddr);原创 2011-12-27 20:13:07 · 4647 阅读 · 0 评论 -
从U-Boot源码看C语言对汇编代码中的符号引用
以下内容来自笔者在中国Linux论坛Linux嵌 入技术讨论区的张贴:aaronwong: u-boot中代码的疑问(_armboot_start与_start)? ---------------------------我 使用的是u-boot-1.3.0-rc2。在cpu/pxa/start.S中,有如下的标号定义: _TEXT_BASE: .word TEXT_BA原创 2012-01-30 11:00:42 · 1100 阅读 · 0 评论 -
深入分析linux内核链表
详细的分析2.6.x内核中链表的实现,并通过实例对每个链表操作接口进行了分析。1,链表数据结构分为,单链表,双链表,循环链表。这些在数据结构中都有了详细的描述。此处省略数百字。2,Linux内核链表数据结构的实现尽管这里使用2.6内核讲解,但是于2.4内核中的链表结构相同。不同之处在于2.6扩充了两种链表数据结构:链表的读拷贝更新(rch)和hash链表(hlist)。链表数据结构转载 2012-01-06 15:00:32 · 571 阅读 · 0 评论 -
浅析container_of(ptr, type, member)
#define container_of(ptr, type, member)({ \ const typeof(((type*)0)->member)*__mptr = (ptr); \ (type *)((char*)__mptr -offsetof(type,member));})#define of转载 2012-01-06 14:32:12 · 518 阅读 · 0 评论 -
Linux内核学习之链表
文章参照任桥位Linux内核修炼之道3.6节编写。在Linux内核中大量地方使用了链表这个数据结构。相信科班出身的学生或者自己学习过数据结构的同学都不陌生,不错,他就是最简单的线性结构——链表。不过,在内核当中,一般采用的都是循环双联表的数据结构。因为源码有三百多行我就不贴在这里,有兴趣的去下载一下:http://download.youkuaiyun.com/detail/huiguixian/3889转载 2012-01-05 20:02:56 · 488 阅读 · 0 评论 -
程序运行一段时候,由于定时调用system产生段错误
在工程下,程序运行一段时间后,产生段错误.定位到是由于定时调用system产生的.经过无穷无尽的修改代码,一直不行.刚开始考虑是inline,后来又检查栈,之后又用进程,后来改用守护进程.在经过无穷无尽的探索后,最终仅仅是把system的库代码移植进工程里面,不调用库的system,而改为自己移植进的system,竟然好了.而且程序运行时,音频也不顿,性能也好了,百思不得其解.原创 2011-12-08 09:21:28 · 1334 阅读 · 0 评论 -
程序运行过程中段错误
最近在写代码时发现,程序在运行十几分钟之后出现段错误.根据我的经验,程序出现段错误的原因,是因为指针指向了不可预知的位置时,便会出现段错误.但是怎么查呢?段错误的产生在库函数上。不好查。根据我目前的了解,inline,栈不够用都有可能。原创 2011-12-01 13:41:43 · 1355 阅读 · 0 评论 -
IP地址、子网掩码、默认网关、DNS服务器
IP地址英文IP address是分配给主机的32位地址,它标识了在网络上的一个节点,并且指定了在一个互连网络上的路由信息. INTERNET上的每台主机(HOST)都有一个唯一的IP地址. 但我们这些拨号上见用户,或ISDN用户,网络接入商为节约资源,一般采用动态IP,即是说:你每次拨号上网ISP就分配一个IP给你. IP,通俗,不规范的说:它相当于你家的电话号码,或是你家的地址.所以除特原创 2012-01-31 17:21:42 · 1678 阅读 · 1 评论 -
ISR之不能做什么
中断是嵌入式系统中重要组成部分,很多编译器开发商都让标准c支持中断,并引入关键字_interrupt.但是:1、ISR不能有返回值;2、ISR不能传递参数;3、ISR应该是短而高效的,在ISR中做浮点运算是不明智的;4、ISR中不应该有重入和性能上的问题,因此不应该使用pintf()函数。 转自优快云 1.ISR 不能有返回值。为什么?原创 2012-02-24 10:36:58 · 598 阅读 · 0 评论 -
http协议与web本质
当你在浏览器地址栏敲入“http://www.youkuaiyun.com/”,然后猛按回车,呈现在你面前的,将是csdn的首页了(这真是废话,你会认为这是理所当然的)。作为一个开发者,尤其是web开发人员,我想你有必要去了解这一系列的处理流程,在这期间,浏览器和服务器到底是如何打交道的?服务器又是如何处理的?浏览器又是如何将网页显示给用户的呢?......疑惑和细节真是太多了。坦白讲,要想彻彻底底的原创 2012-02-17 13:11:56 · 414 阅读 · 0 评论 -
wget 用法
服务器;对安全强度很高的系统而言,一般不会将自己的系统直接暴露在互 联网上,所以,支持代理是下载软件必须有的功能; (4)设置方便简单;可能,习惯图形界面的用户已经不是太习惯命令行了,但是,命令行在设置 上其实有更多的优点,最少,鼠标可以少点很多次,也不要担心是否错点鼠标; (5)程序小,完全免费;程序小可以考虑不计,因为现在的硬盘实在 太大了;完全免费就不得不考虑了,即使网络上有很多原创 2012-02-17 13:07:44 · 646 阅读 · 0 评论 -
如何创建一个执行FTP的批处理文件
1、先创建一个文本文件,把登录明、密码和你要执行的操作写进去:2222233333asciiget DosFtpFile.txtquit其中第一行是用户名,第二行是密码,最后一行是退出命令。然后保存这个文件,假设文件名是sss.ftp2、创建bat文件,这个文件只有一行:ftp -s:sss.ftp ftp.myserver.com其中sss.ftp是你第一原创 2012-02-17 13:14:14 · 954 阅读 · 0 评论 -
wget下载
wget -r http://place.your.url/here 这个命令会按照递归的方法,下载服务器上所有的目录和文件,实质就是下载整个网站。这个命令一定要小心使用,因为在下载的时候,被下载网站指向的所有地址同样会被下载,因此,如果这个网站引用了其他网站,那么被引用的网站也会被下载下来!基于这个原因,这个参数不常用。 可以用-l number参数来指定下载的层次。例如只下载两层,原创 2012-02-17 13:09:26 · 439 阅读 · 0 评论 -
Linux那些事儿之我是Sysfs--12-(opendir,readdir系统调用流程)
上回我们说到,如何创建文件夹和文件。我们发现,在sysfs中,inode并不那么重要。这是因为我们所要读写的信息已经就在内存中,并且已经形成了层次结构。我们只需有dentry,就可以dentry->fsdata,就能找到我们读些信息的来源 --- sysfs_dirent结构。这也是我觉得有必要研究 sysfs的原因之一,因为它简单,而且不涉及具体的硬件驱动,但是从这个过程中,我们可以把文件系统原创 2012-02-17 17:39:57 · 1134 阅读 · 0 评论 -
A demo usging mmap() to read a file
[cpp] view plaincopy#include #include #include #include #include #include int main (int argc, char *argv[]) { struct stat sb;原创 2012-02-27 15:54:50 · 619 阅读 · 0 评论 -
poll()函数的使用
poll函数用于监测多个等待事件,若事件未发生,进程睡眠,放弃CPU控制权,若监测的任何一个事件发生,poll将唤醒睡眠的进程,并判断是什么等待事件发生,执行相应的操作。poll函数退出后,struct pollfd变量的所有值被清零,需要重新设置。示例是使用poll函数来监测按键的输入----------------------------------------------------转载 2012-03-28 15:19:09 · 715 阅读 · 0 评论 -
工作队列的使用
Linux 2.6内核使用了不少工作队列来处理任务,他在使用上和 tasklet最大的不同是工作队列的函数可以使用休眠,而tasklet的函数是不允许使用休眠的。工作队列的使用又分两种情况,一种是利用系统共享的工作队列来添加自己的工作,这种情况处理函数不能消耗太多时间,这样会影响共享队列中其他任务的处理;另外一种是创建自己的工作队列并添加工作。(一)利用系统共享的工作队列添加工作:转载 2012-03-28 15:20:10 · 784 阅读 · 0 评论 -
poll函数
poll函数 poll函数起源于SVR3,最初局限于流设备。SVR4取消了这种限制,允许poll工作在任何描述字上。poll提供的功能与select类似,不过在处理流设备时,它能够提供额外的信息。 1.#include 2. 3.int poll(struct pollfd *fdarray, unsigned long nfds, int timeout); 4.转载 2012-03-28 15:22:24 · 684 阅读 · 0 评论 -
LINUX中断机制与信号
在学习APUE时学习信号编程,很多地方不是理解,便查阅了网络上的相关资料,最常见的一句话就是“信号是中断机制的一种模拟”,既然提到了中断,那就首先了解了一下中断的具体分类以及实现,最后再找出中断和信号的区别。LINUX中断机制与信号中断和异常 l 中 断(也称硬件中断)定义:中断是由其他硬件设备依照CPU时钟周期信号随机产生的。分类: 可屏蔽中断非可转载 2012-03-13 10:24:34 · 519 阅读 · 0 评论 -
嵌入式Linux系统启动过程
一个嵌入式 Linux 系统从软件角度看可以分为四个部分:引导加载程序(Bootloader), Linux 内核,文件系统,应用程序。当系统首次引导时,或系统被重置时,处理器会执行一个位于Flash/ROM中的已知位置处的代码,Bootloader就是这第一段代码。它主要用来初始化处理器及外设,然后调用 Linux 内核。Linux 内核在完成系统的初始化之后需要挂载某个文件系统作为根文转载 2012-03-13 12:05:41 · 831 阅读 · 0 评论 -
深入浅出 Linux设备驱动中断处理介
与Linux设备驱动中中断处理相关的首先是申请与释放IRQ的API: request_irq()和free_irq()。 request_irq()的原型为:int request_irq(unsigned int irq,void (*handler)(int irq, void *dev_id, struct pt_regs *regs),unsigned long irqfla转载 2012-03-13 10:29:25 · 610 阅读 · 0 评论 -
readlink命令
readlink是linux系统中一个常用工具,主要用来找出符号链接所指向的位置。在Ubuntu系统中执行以下命令:[plain] view plaincopy$ readlink --help 可以查看readlink命令的帮助信息,或者执行[plain] view plaincopy$ man readlink转载 2012-03-15 14:06:16 · 27657 阅读 · 1 评论 -
再论检测usb口的设备插拔
以前做过usb口设备的检测,当初有很多疑问,现在水平比当初稍微长了一点,可以总结一下正常情况下怎么做。 两种方式: 1>shell 如果你不用在C代码中实现的可以用此办法。 2>access 如果要在C代码中表达此思想的话,那么就要用到轮循机制中的/dev/input/event%d,当然是用access,检测是否有设备的插入与拔出。 由于工原创 2012-04-01 10:56:23 · 903 阅读 · 0 评论 -
关于 regcomp()、regexec() 正则表达式的问题
关于在c中使用正则表达式在GNU C 中要使用规则表达式,需要用到以下几个函数。(定义在/usr/include/regex.h文件中) * int regcomp (regex_t *compiled, const char *pattern, int cflags) * int regexec (regex_t *compiled, char *string, size_t nma转载 2012-03-15 14:07:01 · 1279 阅读 · 0 评论