首页 › 月度存档 › 12 月 2014

Linux ARM交叉编译工具链制作过程

一、下载源文件

源代码文件及其版本与下载地址:

Binutils-2.19.tar.bz2
http://ftp.gnu.org/gnu/binutils/
gcc-4.4.4.tar.bz2
http://mirrors.kernel.org/gnu/gcc/gcc-4.4.4/
Glibc-2.11.2.tar.bz2
Glibc-ports-2.11.tar.bz2
http://ftp.gnu.org/gnu/glibc/
Gmp-4.2.tar.bz2
http://ftp.gnu.org/gnu/gmp/
Mpfr-2.4.0.tar.bz2
http://ftp.gnu.org/gnu/mpfr/
Linux-2.6.29.tar.bz2
Patch-2.6.29.bz2
http://www.kernel.org/pub/linux/kernel/v2.6/
继续阅读 »

Crosstool-ng制作交叉编译工具链

交叉编译器可以用现成的,比如CodeSourcery制作的交叉编译器,也可以自己制作,一般是用kernel+gcc+glibc+binutils的源码包来编译安装,后来由于这个太麻烦于是就有类似crosstool这样的自动化配置工具。

现在之所以用crosstool-ng是因为crosstool-ng是新的用来建立交叉工具链的工具,它是crosstool的替换者。crosstool的gcc版本只能到4.1.1,无法编译版本高于2.6.29的linux内核。而crosstool-ng一直保持着更新,现在最新能够建立 gcc 4.3.2版本,可用来编译最新内核。
继续阅读 »

fork两次如何避免僵尸进程收藏

fork两次如何避免僵尸进程收藏
继续阅读 »

GDB调试信号、多线程、多进程

GDB的功能很强大,本文主要介绍用GDB来调试信号、多进程、多线程,具体如下:

(一)信号

GDB有能力在你调试程序的时候处理任何一种信号,你可以告诉GDB需要处理哪一种信号。你可以要求GDB收到你所指定的信号时,马上停住正在运行的程序,以供你进行调试。你可以用GDB的handle命令来完成这一功能。
继续阅读 »

建立交叉编译工具链

(1)下载交叉编译工具:arm-linux-gcc-3.4.5.tar.bz2
(2)解压:tar xvf arm-linux-gcc-3.4.5.tar.bz2,多出usr目录
(3)命令:mkdir /usr/local/arm/,创建arm交叉工具链,存放目录
(4)命令:mv usr/local/arm/3.4.5/ /usr/local/arm/,将交叉工具链移动到lusr/local/arm
(5)命令:vim /root/.bashrc,添加如下语句:export PATH=$PATH:/usr/local/arm/3.4.5/bin,这条语句将交叉编译工具链bin/目录的路径添加到环境变量PATH中。保存
(6)重新打开一个终端,输入arm,然后按tab键,如出现arm-linux-,则说明成功了

裸板编程基础知识

一、交叉编译工具选项说明
1、arm-linux-gcc
我们知道一个c/c++文件要经过预处理、编译、汇编、连接四个步骤才能编程可执行文件
预处理:主要讲include文件插入到源文件中、将宏定义展开、根据条件编译命令选择要使用的代码,它用到arm-linux-ccp工具。

继续阅读 »

应用调试之使用gdb和gdbserver

一、调试原理
这里的gdb调试是在pc机上对在开发板上运行的程序进行调试。具体来说的话,在pc机上要运行gdb,在开发板上运行dbserver。gdb调试的时候,pc机上的gdb向开发板上的gdbserver发出命令,而开发板上的gdbserver就会向应用程序发出信号,使应用程序停下来或者完成其他一些工作!由此我们知道,pc机上要运行gdb,开发板上要运行gdbserver!

继续阅读 »

pthread线程的终止退出 | 线程的大量创建

线程终止的三种方式:

1. 线程只是从启动例程中返回,返回值是线程的退出码;

2. 线程调用了pthread_exit函数;

3. 线程可以北同一进程中的其他线程取消。
继续阅读 »

pthread_cond

条件变量 pthread_cond, 另外一种线程间的同步机制。普通的 mutex 只允许一个线程进入临界区,就是拿到mutex这把锁的线程,而cond 允许多个线程同时进入临界区,由它来控制,在某些条件成立的时候,来唤醒其中一个等待着的线程,或者是唤醒所有等待着的线程。
继续阅读 »

一点关于pthread_cond_t条件锁的思考以及实验

APUE上,关于条件锁。其中有这么几条总结:

1。使用条件锁前必须先锁住对应的互斥锁。

2。条件锁进入阻塞(pthread_cond_wait)时自动解开对应互斥锁,而一旦跳出阻塞立即再次取得互斥锁,而这两个操作都是原子操作。
继续阅读 »