linux编程
RYZR
这个作者很懒,什么都没留下…
展开
-
Linux下的管道编程技术
管道技术是Linux的一种基本的进程间通信技术。在本文中,我们将为读者介绍管道技术的模型,匿名管道和命名管道技术的定义和区别,以及这两种管道的创建方法。同时,阐述如何在应用程序和命令行中通过管道进行通信的详细方法。 一、管道技术模型 管道技术是Linux操作系统中历来已久的一种进程间通信机制。所有的管道技术,无论是半双工的匿名管道,还是命名管道,它们都是利用FIFO排队模型来指挥进程间的通信。对于管道,我们可以形象地把它们当作是连接两个实体的一个单向连接器。例如,请看下面的命令: ls转载 2011-03-17 14:42:00 · 1304 阅读 · 0 评论 -
gdbserver调试方法
<br />一、下载gdb-6.4.tar.gz源代码 http://ftp.gnu.org/gnu/gdb/<br />点击这里下载Gdb 的简单使用gdb+gdbserver 方式进行ARM 程序调试PDF版<br />二、编译 GDB<br />2.1、编译arm-linux-gdb<br />#tar zxvf gdb-6.4.tar.gz<br />#cd gdb-6.4 <br />#./configure --target=arm-linux --prefix=/usr/local/arm转载 2011-05-18 15:59:00 · 1368 阅读 · 0 评论 -
Curl和libcurl使用
<br /><br />一、curl简介<br /> <br />curl是一个利用URL语法在命令行方式下工作的文件传输工具。它支持的协议有:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP。curl同样支持HTTPS认证,HTTP POST方法, HTTP PUT方法, FTP上传, kerberos认证, HTTP上传, 代理服务器, cookies, 用户名/密码认证, 下载文件断点续传, 上载文件断点续传, http代理服务器管道转载 2011-04-07 14:45:00 · 1271 阅读 · 0 评论 -
gdb 调试段错误
<br /><br />开发嵌入式Linux的时候经常会遇到segmentation fault,也就是段异常错误,一般是使用错误的指针访问内存导致。这种错误可以通过打开内核的异常信息输出,再用gdb对发生段异常的地址进行定位。<br />1.打开内核的异常信息输出:<br />mips的内核代码关闭了arch/mips/mm/fault.c的do_page_fault():133中的这段代码:<br />#if 0<br /> printk("do_page_fault() #2: sending SI转载 2011-04-12 17:51:00 · 5821 阅读 · 1 评论 -
调试技术: Linux core dump file
<br /><br /> 调试技术: Linux core dump file 收藏<br /> 1. 前言:有的程序可以通过编译, 但在运行时会出现Segment fault(段错误). 这通常都是指针错误引起的.但这不像编译错误一样会提示到文件->行, 而是没有任何信息, 使得我们的调试变得困难起来.<br /> 2. gdb:有一种办法是, 我们用gdb的step转载 2011-04-13 17:28:00 · 2652 阅读 · 0 评论 -
Sockets编程简介
Berkeley Sockets Network I/O is morecomplicated than the normal file I/O. The file I/O operations are on thesame system, the file descriptor is sufficient for identifying a file.转载 2011-06-16 11:30:00 · 619 阅读 · 0 评论 -
cairo的代码
<br />最近在看cairo的代码,随手写的文档,还没有整理。<br />Cairo将成为Linux 2D 绘图的未来,相信我,没错的。这是一个笔记,另外还有一个cairo粗斜体显示中文的补丁,这个补丁我永远也不会向外放,因为,这么作,就跟firefly和akito的做法一样,用一个错误的方法解决错误的问题。粗体实现,应该在freetype的GetBitmap之前就要完成,这样,任何基于freetype的东西都不再需要补丁了。这个文档会不断完善,也会跟着cairo的版本升级作修改,我希望最后这个文档能转载 2011-04-28 10:03:00 · 2440 阅读 · 1 评论 -
DirectFB和Cairo的嵌入式图形开发实践
<br />引 言<br /> DirectFB是一个提供硬件图形加速、输入设备处理抽象并集成了透明功能窗体系统和多显示层处理的开源库。通过对底层硬件不支持的图形操作以回调函数实现,DirectFB实现硬件设备的完全抽象。另外DirectFB在设计之初就充分考虑嵌入式系统的固有特性,体积小巧,资源消耗低。作为嵌入式系统中强大的图形处理库,DirectFB成为Linux下图形处理的一个新的标准(CELF AVG 1.0标准)。<br /> 使用DirectFB可以绕开X Window系统,转载 2011-04-28 10:21:00 · 1360 阅读 · 0 评论 -
OABI 和 EABI
1。什么是ABIABI,application binary interface (ABI),应用程序二进制接口。既然是 接口,那就是某两种东西之间的沟通桥梁,此处有这些种情况:A。应用程序 操作系统;B。应用程序 (应用程序所用到的)库C 。应用程序各个转载 2011-09-22 13:48:44 · 577 阅读 · 0 评论 -
二进制实用程序(objdump, readelf,ar, nm等)
<br />GNU 二进制实用程序Binutils (GNU binary utilities)包括:objdump、readelf、addr2line、strip、ar、nm、ldd、ngprof、gcov等。<br /><br />一。 objdump - 显示二进制文件信息<br /><br />objdump可以根据目标文件来生成可读性比较好的汇编文件。常用的命令如下:<br /><br />gcc -g3 test.c -o test.o <br />objdump -Slz te转载 2011-05-17 18:03:00 · 1233 阅读 · 0 评论 -
交叉编译 MSB 和LSB 问题
<br /> MIPS平台gcc交叉编译MSB和LSB问题<br /> <br /> 最近在做mips平台的工作,在交叉编译软件包的时候发现的问题现在记录下来,当我们用linux命令file一个文件的时候会出现如:<br />libiconv.so.2.5.0: ELF 32-bit LSB shared object, MIPS, MIPS32 rel2 versio原创 2011-03-29 12:29:00 · 10849 阅读 · 3 评论 -
Linux下的C语言多线程编程
<br /><br />引言<br /> 线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多<br /> 为什么有了进程的概念后,还要再引入线程呢?使用多线程到底有哪些好处?什么的系统应该选用多线程?我们首先必须回答这些问题。 <br /> 使用多线程的理由之一是和进程相比,它是一种非常"节俭"的转载 2011-03-17 14:47:00 · 676 阅读 · 0 评论 -
Linux 信号signal处理机制
<br /> <!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --><br />Linux 信号signal处理机制<br /> 信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断。从它的命名可以看出,它的实质和使用很象中断。所以,信号可以说是进程控制的一部分。<br /> 一、信号的基本概念<br /> 1、基本概念<转载 2011-03-17 17:30:00 · 1372 阅读 · 0 评论 -
Linux下gcc编译中关于头文件与库文件搜索路径相关问题(二)
<br />关键字: linux指定动态库路径<br />Linux 指定动态库路径<br /> <br />众所周知, Linux 动态库的默认搜索路径是 /lib 和 /usr/lib 。动态库被创建后,一般都复制到这两个目录中。当程序执行时需要某动态库, 并且该动态库还未加载到内存中,则系统会自动到这两个默认搜索路径中去查找相应的动态库文件,然后加载该文件到内存中,这样程序就可以使用该动态库中的函 数,以及该动态库的其它资源了。在 Linux 中,动态库的搜索路径除了默认的搜索路径外,还可以通过以下三转载 2011-03-20 20:01:00 · 716 阅读 · 0 评论 -
Linux下gcc编译中关于头文件与库文件搜索路径相关问题(一)
<br />关键字: 如何指定gcc的默认头文件路径<br />在交叉编译的时候我们需要用到其他的库,在 config 时候可以通过 “-I” 来指定头文件目录,但是每次都需要设置的话难免有些麻烦,找到一个简单的方法。看下文的红色部分。 <br /><br />有大量的环境变量可供设置以影响 GCC 编译程序的方式。利用这些变量的控制也可使用合适的命令行选项。一些环境变量设置在目录名列表中。这些名字和 PATH 环境变量使用的格式相同。特殊字符 PATH_SEPARATOR (安装编译程序的时候定义)用在目转载 2011-03-20 20:00:00 · 1737 阅读 · 1 评论 -
控制符号的可见性
<br /> 在普通的C语言中,如果您希望将函数或者变量限制在当前文件中,需要对其使用static关键字。然而,在一个包含很多文件的共享库中,如果您希望某个符号可以被共享库内部的几个文件访问,而又不提供给外部,则对符号进行隐藏处理就会比较困难。大多数的连接器都提供一些便利的方法来隐藏或者显示模块中所有的符号,但如果希望更加具有选择性,则需要更多的处理。 在Mac OS X v10.4之前,有两种机制可以控制符号的可见性。<br /> 第一种技术是通过__private_extern__关键字,转载 2011-03-18 10:41:00 · 1419 阅读 · 0 评论 -
Linux下gcc编译中关于头文件与库文件搜索路径相关问题(三)
<br />关键字: linux操作系统的头文件和库文件搜索路径<br />Include 的 header 文件 , 动态链接库,系统定义,总共有下列来源指定 gcc 去那里找。<br />当初在编译时指定的 ( 在 ~gcc/gcc/collect2.c:locatelib()<br />写在 specs 内的 ,内定的,这是当初 compile gcc 时写在程序内的。<br />后来用 -D -I -L 指定的<br />gcc 环境变量设定 ( 编译的时候 )<br />ld.so 的环境变量 (转载 2011-03-20 20:04:00 · 600 阅读 · 0 评论 -
libtool
<br />作者:刘军涛 系所:微处理器研发中心 日期:2006-1-6<br />1 libtool的工作原理<br />libtool 是一个通用库支持脚本,将使用动态库的复杂性隐藏在统一、可移植的接口中;使用libtool的标准方法,可以在不同平台上创建并调用动态库。可以认为libtool是gcc的一个抽象,其包装了gcc(或者其他的编译器),用户无需知道细节,只要告诉libtool需要编译哪些库即可,libtool将处理库的依赖等细节。libtool只与后缀名为lo、la为的li转载 2011-05-17 18:11:00 · 673 阅读 · 0 评论 -
嵌入式开发板与PC串口传输文件
嵌入式开发板与PC串口传输文件目标板与主机pc传输文件问题,可以使用linux的工具lrzsz 工具,交叉编译后把 lrz lsz 传输到目标版的bin目录下,然后在想要接受文件的目录下运行lrz :比如 cd /tmp 在tmp目录下运行lrz 则接受到的文件就放在tmp下。我的串口传输用kermit 所以需要在运行先设置一下kermit的配置 在/home/richard/.kermit 文件中写道:set line /dev/ttyUSB0set speed 1原创 2011-03-29 13:58:00 · 1930 阅读 · 1 评论 -
查看编译器自定义宏
1. cpp -dM /dev/null 命令可以查看本机gcc编译器自定义的宏2.c2-linux-cpp -dM /dev/null 我用c2的交叉编译器,所以执行这个命令就可产看c2的gcc编译的自定义宏3. gcc -dM -E - < /dev/null主要是为了用CPU架构来区分不同平台 例如 代码中有#if defined(__ppc64__)原创 2011-06-23 17:13:00 · 1156 阅读 · 0 评论