交叉编译linux内核
1. 下载源文件、补丁和建立编译的目录 2. 建立内核头文件 3. 建立二进制工具(binutils) 4. 建立初始编译器(bootstrap gcc) 5. 建立c库(glibc) 6. 建立全套编译器(full gcc)
⑵ 如何编译/交叉编译内核模块, Linux 2.6.
椤�build 能够编译内核树目录内的内核模块,也能够编译内核树目录外的内核模块(外部内核模块)。. 编译外部内核模块的命令: #cd <your-mole-dir> #make -C <path-to-kernel> M=`pwd` 其中<your-mole-dir> 为要编译的内核模块所在目录,<path-to-kernel> 为内核源码所在的目录。 对于发行版本的Linux ,可以用: #make -C /lib/moles/`uname -r`/build M=`pwd` 注意:使用Kbuild 之前,必须先成功编译过内核源码。 说明: .#make -C <path-to-kernel> M=`pwd` moles 作用与上面的命令一样 .以前的内核版本可以使用 #make -C <path-to-kernel> SUBDIRS=`pwd` moles. 安装外部内核模块 #make -C <path-to-kernel> M=`pwd` moles_install 默认安装目录为:/lib/moles/`uname -r`/extra ,可以通过INSTALL_MOD_PATH 宏在默认安装路径前加前缀。 例如: #make -C <path-to-kernel> INSTALL_MOD_PATH=/opt M=`pwd` moles_install 则编译后的模块会放在/opt/lib/moles/`uname -r`/extra 通过宏INSTALL_MOD_DIR 可以修改是否放在'extra' 下,例如: #make -C <path-to-kernel> INSTALL_MOD_DIR=golf M=`pwd` moles_install 则编译后的模块会放在/lib/moles/`uname -r`/golf . 编译单个文件 #make -C <path-to-kernel> M=`pwd` <filename>. 其他命令 #make -C <path-to-kernel> M=`pwd` clean #make -C <path-to-kernel> M=`pwd` help.Kbuild 文件 Linux的Kbuild 会在内核模块目录下查找Kbuild 文件,如果有,则在编译时会使用该文件。示例: 假设有这么几个文件:8123_if.c 8123_if.h 8123_pci.c 8123_bin.o_shipped( 二进制的模块文件) Kbuild 文件的内容: obj-m := 8123.o 8123-y:8123_if.o 8123_pci.o 8123_bin.o Makefile的内容: #为了兼容旧版本的Kbuild ifneq($(KERNELRELEASE),) include Kbuildelse# 正常的Makefile KDIR:=/lib/moles/`uname -r`/buildall::$(MAKE) -C $(KDIR) M=`pwd` $@ # 其他targetgenbin:echo "X" > 8123_bin_shippedendif 注意,没有源码的二进制.o 文件必须以原文件名加_shipped 结尾,例如8123_bin.o_shipped,KBuild 会把8123_bin.o_shipped 复制为8123_bin.o ,然后一起编译。 应该用: ifeq ($(obj),) obj= .
⑶ 用交叉编译器(已经更改为arm-linux-gcc) 编译内核;但是提示gcc没有找到
提示 gcc:not command;就表示是gcc命令没找到,这个和你的arm-linux-gcc没关系,因为如果arm-linux-gcc找不到的话,会提示arm-linux-gcc找不到的,所以你就只能猜是不是host边的gcc没找到,然后在你的主机端安装gcc开发包就可以了。
嵌入式一种重要的能力就是debug,自己锻炼下吧,以后这种简单的问题就能搞定了。
⑷ 怎么查看Linux下系统的内核,交叉编译,文件系统的版本
一般交叉编译器里都有一个lib的文件夹的,把你的lib文件cp到这里应该就可以了。也可以用gcc带的-l,例如:arm-linuc-gcc
-l/root/lib
xx.c
-o
xx.o
⑸ 如何建立Linux交叉编译环境
最近有很多朋友在探讨关于建立Linux交叉编译环境的问题,下面就一些问题作一个说明,以期抛砖引玉。
基于Linux操作系统的应用开发环境一般是由目标系统硬件(开发板)和宿主PC机所构成。目标硬件开发板用于运行操作系统和系统应用软件,而目标板所用到的操作系统的内核编译、应用程序的开发和调试则需要通过宿主PC机来完成(所以称为交叉编译)。双方之间一般通过串口,并口或以太网接口建立连接关系。
但在此我建议构建如下的交叉编译环境,适合个人或研发小组使用:单独拿出一台PC机(PII以上即可,就用以前淘汰的旧机器就可以),在该PC上安装桌面的Linux操作系统(如Red
Hat
Linux
8.0及以上),可以采用默认的安装选项(注意要包含ftp服务),这台PC作为Linux服务器,除管理员以外,一般不直接让其他人去操作。
将该Linux服务器接入局域网,并新建一些合法用户,以便其他的PC机(在此我们将其称为工作站)的合法用户能访问到Linux服务器。而其他的PC机(工作站)仍然使用Windows操作系统,原来干啥继续干啥。
需要的软件工具包括:
1、FTP客户端程序(如Cuteftp,可到网上下载)。
2、Telnet工具(如SecureCRT,可到网上下载)。
3、移植到某一特定ARM平台的Linux操作系统内核源码(一般由销售商整理提供)。
4、GNU编译工具,可由相关网站下载,或由销售商整理提供。
在工作站安装:在某工作站PC上安装FTP客户端程序和Telnet工具,安装完毕后应该可以在该工作站PC和Linux服务器之间进行文件的传输,并在工作站PC可以通过Telnet登陆到Linux服务器(可能需要将Linux服务器的防火墙服务关闭才能完成)。
在Linux服务器安装:将工作站PC上的Linux操作系统内核源码压缩包和GNU编译工具通过FTP传送到Linux服务器的某个目录(如合法的用户目录),然后在该目录下解压,并将GNU编译工具安装到默认的工作目录即可,以上工作通过在工作站PC使用Telnet工具完成,而不需要在Linux服务器上进行。
Linux操作系统内核的编译:Linux操作系统内核的编译一般有一个比较固定的步骤,会根据MakeFile文件的不同而略有差异,可参考相关文档,编译的工作在工作站PC使用Telnet工具完成。
按固定的步骤编译内核完成以后,会在相应目录生成可执行的二进制文件,通过FTP将该可执行的二进制文件传回工作站PC,然会再通过ADS或SDT下的烧写工具写入开发板的Flash即可。
(T004)
⑹ linux交叉编译ARM内核问题,急!!
编译器的问题,更换交叉编译链即可
另外编译内核推荐使用使用make bzImage ARCH=arm CROSS_COMPILE=arm-linux-
在编译之前请先配置内核make menuconfig ARCH=arm
⑺ 如何使用ARM+Cortex-A9的移植一个Linux操作系统,作为服务器
要在ARM Cortex-A9上移植Linux操作系统并将其用作服务器,需要执行以下步骤:
选择适当的Linux发行版:首先,需要选择适合ARM Cortex-A9的Linux发行版。一些流行的ARM Linux发行版包括Ubuntu、Debian、Fedora、OpenSUSE等。您可以从官方网站下载适合您的ARM Cortex-A9的版本。
下载交叉编译工具链:由于ARM Cortex-A9是基于ARM架构的,因此需要使用交叉编译工具链来编译Linux内核和应用程序。您可以从ARM官方网站下载适合您的交叉编译工具链。
编译内核:使用交叉编译工具链编译Linux内核。您可以从Linux内核官方网站下载最新版本的内核源代码,并使用交叉编译工具链进行编译。编译完成后亩尘,将内核镜像文件复制到ARM Cortex-A9的启动设备中。
配置文件系统:在ARM Cortex-A9上运行Linux操作系绝耐敏统需要一个文件系统。您可以使用BusyBox等工具来创建一个最小的文件系统。将文件系统复制到并枝ARM Cortex-A9的启动设备中。
启动Linux操作系统:将启动设备插入ARM Cortex-A9,并将其连接到计算机。使用串口或SSH等工具连接到ARM Cortex-A9,并启动Linux操作系统。如果一切正常,您应该能够登录到Linux系统并使用它作为服务器。
配置服务器:根据您的需求配置Linux服务器。您可以安装Web服务器、数据库服务器、FTP服务器等,以满足您的需求。