随笔分类 - 编译原理
Make Makfile 链接脚本
摘要:转载:http://www.kernelchina.org/node/1050linux的list实现之中有如下东东:#define list_for_each(pos, head) \ for (pos = (head)->next; prefetch(pos->next), pos != (h...
阅读全文
摘要:GNUARM汇编指令(2008-10-29 00:16:10)标签:linuxgnuarm汇编指令it分类:技术文摘第一部分 Linux下ARM汇编语法尽管在Linux下使用C或C++编写程序很方便,但汇编源程序用于系统最基本的初始化,如初始化堆栈指针、设置页表、操作 ARM的协处理器等。初始化完成...
阅读全文
摘要:转载:http://www.cnblogs.com/kungfupanda/p/3708799.htmlchrpath是用来改变程序的depends lib 的搜索路径的,比如我们一般使用$ldd application linux-vdso.so.1 => (0x00007fff89844000)...
阅读全文
摘要:转载:http://blog.csdn.net/adaptiver/article/details/72259801. 引子编译2.6.35.7 kernel版本的时候发现,“2.6.35.7“的内核版本编译成功后生成的版本号变成了“2.6.35.7+”,为什么后面会多一个加号呢?问题出现在linu...
阅读全文
摘要:转载:http://www.embeddedlinux.org.cn/html/yingjianqudong/201403/23-2820.html Linux内核是一种单体内核,但是通过动态加载模块的方式,使它的开发非常灵活 方便。那么,它是如何编译内核的呢?我们可以通过分析它的Makefile入
阅读全文
摘要:转载:http://blog.csdn.net/kasalyn/article/details/17097639The __KERNEL__ macro is defined because there is programs (like libraries) that include kernel code and there is many things that you don't want them to include. So most modules will want the__KERNEL__ macro to be enabled.When you compile y
阅读全文
摘要:转载:http://blog.csdn.net/wzw88486969/article/details/11739737在内核的 Makefile 中会在多处地方看到 FORCE ,比如:# vmlinux image - including updated kernel symbolsvmlinux: $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) vmlinux.o $(kallsyms.o) FORCE实际上它是一个伪目标:PHONY +=FORCEFORCE:# Declare the contents of the .PHONY vari
阅读全文
摘要:用到的知识:select poll poll_wait 异步通知 自旋锁 等待队列 中断http://pan.baidu.com/s/1o6I1QCq
阅读全文
摘要:转载:http://blog.csdn.net/mo_hui123456/article/details/8929615 管理Linux环境下的C/C++大型项目,如果有一个智能的BuildSystem会起到事半功倍的效果,本文描述Linux环境下大型工程项目子目录Makefile的一种通用写法,使用该方法,当该子目录内的文件有增删时无需对Makefile进行改动,可以说相当的智能。下面先贴代码(为减小篇幅,一些非关键的代码被去掉):ROOTDIR = .EXE_DIR = ./binCFLAGS = -I$(INCLUDE_DIR) -I$(LIB_INC) -WallLFLAGS = -L
阅读全文
摘要:摘要本文主要介绍了什么是交叉编译,为何要有交叉编译;解释了什么是工具链,什么是交叉工具链;详解解释了交叉编译器的名字的命名规则,以及如何获得交叉编译器,制作交叉编译器的各种工具,使用已有的交叉编译器和自己手动编译交叉编译器之间的对比;最后总结了交叉编译方面的心得和注意事项。http://pan.baidu.com/s/1nt4pP9ncrosstool-ng详解1. 本文目的本文目的在于,介绍关于crosstool-ng的各种方面,包括如何下载安装和使用,如何配置和编译等等。使得对于crosstool-ng不熟悉的人,都可以很快上手,可以实现自己用crosstool-ng,编译出来一个自己的交
阅读全文
摘要:下面是一个执行make XXX_config后的打印信息:pengdl@debian:~/work/costdown/new/Hi3520D_SDK_V1.0.2.2c/source/arm11/u-boot-2010.06$ make ARCH=arm CROSS_COMPILE=arm-hisiv100nptl-linux- hi3520d_configGenerating include/autoconf.mkGenerating include/autoconf.mk.dep# Target Architecture CPU Board [VENDOR] [SOC]'$#
阅读全文
摘要:转:http://www.cnblogs.com/xmphoenix/archive/2012/02/22/2363335.html指示符“include”、“-include”和“sinclude” 如果指示符“include”指定的文件不是以斜线开始(绝对路径,如/usr/src/Makefile...),而且当前目录下也不存在此文件;make将根据文件名试图在以下几个目录下查找:首先,查找使用命令行选项“-I”或者“--include-dir”指定的目录,如果找到指定的文件,则使用这个文件;否则继续依此搜索以下几个目录(如果其存在):“/usr/gnu/include”、“/usr/lo
阅读全文
摘要:在进行程序编译时,可能需要指定一些库的库的路径、头文件的路径,分别使用的参数选项是-L和-I,需要注意的是:需要确保-L和-I后边的内容不为空,否则会出现意想不到的错误,而这种错误比较难以发现,引起不注意的原因是,一般在Makefile中会使用诸如 -L$(XXX)或者-I$(XXX)这种形式,当括号中的变量为空时就会导致-I或-L后面为空,从而引起编译时的错误,明明库和头文件的路径已经指定了,就是死活找不到库和头文件。
阅读全文
摘要:内容引子模拟需求工具简介生成 Makefile 的来龙去脉Configure.in的八股文实战Makefile.am下载参考资料 关于作者评论引子无论是在Linux还是在Unix环境中,make都是一个非常重要的编译命令。不管是自己进行项目开发还是安装应用软件,我们都经常要用到 make或 make install。利用make工具,我们可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用make和 makefile工具就可以轻而易举的理顺各个源文件之间纷繁复杂的相互关系。但是如果通过查阅make的帮助文档来手工编写Makefile,对任何程序员都是一场挑
阅读全文
摘要:内核是如何编译成的 -知其然而不知其所以然(第一篇)转载:http://blog.chinaunix.net/uid-28236237-id-3840137.htmlLinux内核有分门别类的目录,每个目录包含了不同过能的模块代码。大家一般把这个结构叫做linux代码树。树必然是一个非常恰当的比喻,枝分枝,密密麻麻,参差不穷。那编译内核的时候内核的编译系统是如何将这么多的文件编译链接起来最后形成一个可运行的镜像文件的呢。这篇文章主要从较高的层面串联出这个过程,使得我们能在头脑里形成一个内核编译的过程。内核编译系统本来就是相当复杂的,这里我们只描述编译过程,至于这个过程是如何通过Makefile
阅读全文
摘要:转载:内核镜像zImage是如何生成的内核镜像zImage是如何生成的前面两篇文章介绍了vmlinux 文件生成,这个文件必然是核心的linux内核,但是它是ELF格式的文件,其中包含了可执行的二进制指令(内核),调试信息,符号表等内容。 vmlinux的生成是编译内核的关键,但是得到的vmlinux文件是不能烧写到flash中执行的。主要的问题是,没有一个环境来加载ELF格式的文 件。而zImage则是可以加载执行的二进制代码。总的来说zImage和vmlinux的关系是:1、zImage是可可运行的二进制内核镜像2、zImage是由vmlinux处理、压缩得到的3、zImage的大小比vm
阅读全文
摘要:转:http://www.embeddedlinux.org.cn/html/xinshourumen/201303/11-2475.html本文详细阐述了linux内核相关的开发职位面试中经常遇到的面试题,仅供各位参考。1.Linux中主要有哪几种内核锁?Linux的同步机制从2.0到2.6以来不断发展完善。从最初的原子操作,到后来的信号量,从大内核锁到今天的自旋锁。这些同步机制的发展伴随Linux从单处理器到对称多处理器的过渡;Linux的内核锁主要是自旋锁和信号量。自旋锁最多只能被一个可执行线程持有,如果一个执行线程试图请求一个已被争用(已经被持有)的自旋锁,那么这个线程就会一直进行忙循
阅读全文
摘要:文件查找 find * -name "xarina_evb_defconfig" grep "TEXT_BASE" * -nR find . ! -name "*.txt" -print 搜索除了*.txt之外的文件 find -name *.patch | xargs -i cp '{}' ./p
阅读全文
摘要:转载自:http://www.2cto.com/os/201304/205118.html参考: http://blog.csdn.net/t0nsha/article/details/8606886set -x与set +x指令用于脚本调试。set是把它下面的命令打印到屏幕set -x 是开启 set +x是关闭 set -o是查看 (xtrace),set去追中一段代码的显示情况。执行set -x后,对整个脚本有效。[root@mybox bin]# ls -l /bin/bash+ ls --color=tty -l /bin/bash-rwxr-xr-x 1 root root 722
阅读全文
摘要:实验一 交叉工具链的安装 实验二 u-boot的烧写及使用 实验三 u-boot-2010.03的移植 实验四 内核的配置和编译 实验五 网卡驱动的移植 实验六 LED驱动的移植 实验七 Nand flash驱动的移植 实验八 LCD驱动的移植 实验九 USB驱动的移植 实验十 SD卡驱动的移植 实验十一 yaffs2文件系统的移植 实验十二 内核调试 实验十三 内存调试 实验十四 文件系统的移植 实验一 交叉工具链的安装【实验目的】 了解交叉工具链的编译过程及其使用。 说明:在实验中命令行提示符为“$”表示在主机上运行,“#”表示在目标板上运行【实验环境】1、 ubuntu 10.10发行版
阅读全文