当前位置:首页 » 编程软件 » kernel编译

kernel编译

发布时间: 2022-07-18 21:30:35

㈠ 怎样让自己编译的kernel.img生效

由于源代码放在一个压缩文件中,因此在配置内核之前,要先将源代码释放到指定的目录下。首先以root帐号登录,然后进入/usr/src子目录。如果用户在安装linux时,安装了内核的源代码,则会发现一个linux-2.2.5的子目录。该目录下存放着内核2.2.5的源代码。此外,还会发现一个指向该目录的链接linux。删除该连接,然后将新内核的源文件拷贝到/usr/src目录中。

(一)、用tar命令释放内核源代码

# cd /usr/src

# tar zxvf Linux-2.3.14.tar.gz

文件释放成功后,在/usr/src目录下会生成一个linux子目录。其中包含了内核2.3.14的全部源代码。

(二)、将/usr/include/asm、/usr/inlude/linux、/usr/include/scsi链接到/usr/src/linux/include目录下的对应目录中。

# cd /usr/include

# rm -Rf asm linux

# ln -s /usr/src/linux/include/asm-i386 asm

# ln -s /usr/src/linux/include/linux linux

# ln -s /usr/src/linux/include/scsi scsi

(三)、删除源代码目录中残留的.o文件和其它从属文件。

# cd /usr/src/linux

# make mrproper

三、 配置内核

(一)、启动内核配置程序。

# cd /usr/src/linux

# make config

除了上面的命令,用户还可以使用make menuconfig命令启动一个菜单模式的配置界面。如果用户安装了X window系统,还可以执行make xconfig命令启动X window下的内核配置程序。

(二)、配置内核

Linux的
内核配置程序提供了一系列配置选项。对于每一个配置选项,用户可以回答"y"、"m"或"n"。其中"y"表示将相应特性的支持或设备驱动程序编译进内
核;"m"表示将相应特性的支持或设备驱动程序编译成可加载模块,在需要时,可由系统或用户自行加入到内核中去;"n"表示内核不提供相应特性或驱动程序
的支持。由于内核的配置选项非常多,本文只介绍一些比较重要的选项。

1、Code maturity level options(代码成熟度选项)

㈡ 如何在kernel模块中使用已经编译好的obj文件

1。 创建自己的obj文件
我最开始使用 gcc -c ex_obj.c -o ex_obj.o_shipped 来做的,结果链接后不能正常工作。

原来是一定要放在编译kernel的环境中编译这个obj。
ifneq ($(KERNELRELEASE),)
obj-y := xxxx.o #your obj files goes here. 关键在这里,用obj-y 来指定要编译的,然后这个过程就在编译的时候停了,不会继续链接。
else
KERNELDIR ?= /lib/moles/$(shell uname -r)/build
PWD := $(shell pwd)

default:
$(MAKE) -C $(KERNELDIR) M=$(PWD)

endif

clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions

depend .depend dep:
$(CC) $(CFLAGS) -M *.c > .depend

ifeq (.depend,$(wildcard .depend))
include .depend
endif
编译成功后,将这个拷贝到需要链接的模块目录。
记住要添加_shipped后缀

2。 然后在需要这个obj的模块中添加
scull-y := main.o pipe.o access.o ex_obj.o

然后在源代码中调用相应的函数,ok,可以了。

㈢ android 怎样编译kernel 命令 make

方法如下:
在Linux的环境下:
建立目录:

mkdir ~/android-kernel cd android-kernel

下载源代码, 大概有280MB, 慢慢等哈~~~ (当然你要先安装git) git clone git://git.linuxtogo.org/home/groups/mobile-linux/kernel.git
类似的屏幕信息:
Initialized empty Git repository in /home/user/android-kernel/kernel/.git/ remote: Counting objects: 908251, done.
remote: Compressing objects: 100% (153970/153970), done.
remote: Total 908251 (delta 755115), reused 906063 (delta 753016) Receiving objects: 100% (908251/908251), 281.86 MiB | 292 KiB/s, done. Resolving deltas: 100% (755115/755115), done. Checking out files: 100% (22584/22584), done.
然后去到htc-msm branch: cd kernel
git checkout -b htc-msm origin/htc-msm
屏幕信息:
Branch htc-msm set up to track remote branch refs/remotes/origin/htc-msm. Switched to a new branch "htc-msm"

下载ARM的toolchain, 大概64MB左右, 下到~/android-kernel: 下

:
http://www.codesourcery.com/gnu_toolchains/arm/portal/package2549/public/arm-none-linux-gnueabi/arm-2008q1-126-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

cd ~/android-kernel
tar xjf arm-2008q1-126-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
编译kernel

准备缺省的Kaiser 配置文件.config
cd ~/android-kernel/kernel

make htckaiser_defconfig ARCH=arm
然后编译zImage:
export PATH=~/android-kernel/arm-2008q1/bin:$PATH
make zImage ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-
编译好的在: ~/android-kernel/kernel/arch/arm/boot/zImage

如果你的机器是多核的, 可以编译的时候用-j <cores/cpus_number>来加速:
比如, 双核的可以:
make -j 2 zImage ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi
满意请采纳谢谢

㈣ android kernel 怎么编译

1.准备工作: (ubuntu1110 32位)
ubuntu等linuxOS,下载好eclipse,安装好JDK, 安装好android的SDK, 在eclipse中成功打开android 手机模拟器即OK。

2.初始化编译环境 :
关注该网页上的“installing required packages”,其中有的软件包因为版本问题而安装不上,不用管它,之后遇到错误再单独解决。

3.下载内核源码
android 2.3 内核 下载需要等待一段时间。

4.下载交叉编译器:
该步骤有可能耗费大量时间,依据网速不同,几个小时到几天不等,或许可以尝试git clone 后面的地址只下载prebuilt/linux-x86/toolchain

5.设置参数以及编译:
$ export ARCH=arm
$ export SUBARCH=arm
$ export CROSS_COMPILE=arm-eabi-
$ cd goldfish // 进入下载的源代码目录
$ git checkout <commit_from_first_step> //这个步骤没有做,不知道干嘛用的
$ make goldfish_defconfig
$ make

6.报错信息:
若有报错说找不到 (arm-eabi-gcc command not found)等等,尝试使用http://blog.csdn.net/davidbeckham2901/article/details/7397447 中说到的解决方案即可(即采用另外一个交叉编译器)。

7.测试:

最后,测试一下刚才编译的内核:emulator -avd myavd -kernel ~/goldfish/arch/arm/boot/zImageemulator若系统找不到,可以去android SDK中某文件夹找到,加入系统PATH即可。 -avd后面的参数 myavd即为模拟器的名字,这个咱是在eclipse中的模拟器管理中新建的一个模拟器,用那个模拟器的名字即可。 -kernel后面的参数就找到刚才编译出的内核的路径。
若启动模拟器失败,可尝试关闭后再启动。第一次启动模拟器时可能需要等待比较长的时间,3分钟到15分钟不等。

㈤ 为什么opencl的kernel是运行时编译的

请输入您的回答...展开来说:

  1. OpenCL标准是作图形标准比如OpenGL那帮人搞得。 OpenGL本身就是运行时编译shader(即OpenCL的kernel)。这帮人已经习以为常运行时编译,因而顺理成章的运用到OpenCL里面。
  2. 最初的想法是跨平台性。写好一个源代码,由运行时编译器编译成针对特定芯片组的二进制代码,这样就可以在任何厂商的平台上运行。(想法是美好的,现实是残酷的。由于各厂商芯片的体系结构差别极大,对扩展指令的支持度不一样,并且由于标准演进速度较快,导致了不同版本的标准同时出现在市场上,比如现在2015年10月,市面上可见OpenCL 1.0, 1.1, 1.2, 2.0, full profile, embedded profile并存, 因此在实际执行的时候,单一源码通吃各平台几乎不大可能。若想获得最佳性能,需要针对不同平台进行不同的调教和优化。)
  3. 运行时编译可以带来一个附送的好处:代码的灵活性。即主程序可以根据具体平台的情况或者应用的具体情况,运行时动态修改kernel代码!具体实施简单的说如下:因为OpenCL是通过读入kernel程序的文本的方式编译, 因而我们可以通过修改原代码字符串、使用通用输入输出流等方式,根据需求灵活的修改kernel code。 比如支持不同的数据类型,不同的访存方式等。

㈥ 如何编译android kernel

1.准备工作: (ubuntu1110 32位)
ubuntu等linuxOS,下载好eclipse,安装好JDK, 安装好android的SDK, 在eclipse中成功打开android 手机模拟器即OK。

2.初始化编译环境 :
关注该网页上的“installing required packages”,其中有的软件包因为版本问题而安装不上,不用管它,之后遇到错误再单独解决。

3.下载内核源码:
android 2.3 内核 下载需要等待一段时间。

4.下载交叉编译器:
该步骤有可能耗费大量时间,依据网速不同,几个小时到几天不等,或许可以尝试git clone 后面的地址只下载prebuilt/linux-x86/toolchain

5.设置参数以及编译:
$ export ARCH=arm
$ export SUBARCH=arm
$ export CROSS_COMPILE=arm-eabi-
$ cd goldfish // 进入下载的源代码目录
$ git checkout <commit_from_first_step> //这个步骤我没有做,不知道干嘛用的
$ make goldfish_defconfig
$ make

6.报错信息:
若有报错说找不到 (arm-eabi-gcc command not found)等等,尝试使用http://blog.csdn.net/davidbeckham2901/article/details/7397447 中说到的解决方案即可(即采用另外一个交叉编译器)。

7.测试:

最后,测试一下刚才编译的内核:emulator -avd myavd -kernel ~/goldfish/arch/arm/boot/zImageemulator若系统找不到,可以去android SDK中某文件夹找到,加入系统PATH即可。 -avd后面的参数 myavd即为模拟器的名字,这个我是在eclipse中的模拟器管理中新建的一个模拟器,用那个模拟器的名字即可。 -kernel后面的参数就找到刚才编译出的内核的路径。
若启动模拟器失败,可尝试关闭后再启动。第一次启动模拟器时可能需要等待比较长的时间,3分钟到15分钟不等。

㈦ 如何配置kernel编译选项支持tf卡

将TF插入读卡器,再连接到电脑,电脑会提示发现硬件,等电脑自动驱动,驱动完会有提示,然后在(我的电脑)里找到读卡器的盘,对着刚才驱动的盘点击右键,找到“格式化”,弹出一个界面,里面有个类型的,你选择FAT32,再钩上下面的“快速格式化”,点击下面的“确定”,这样就可以将TF卡的构架格式成FAT32。

㈧ Linux的内核代码如何编译

1、安装内核
如果内核已经安装(/usr/src/目录有linux子目录),跳过
如果没有安装,在光驱中放入linux安装光盘,找到kernel-source-2.xx.xx.rpm文件(xx代表数字,表示内核的版本号),
比如RedHat
linux的RPMS目录是/RedHat/RPMS/目录,然后使用命令rpm
-ivh
kernel-source-2.xx.xx.rpm安装内核
如果没有安装盘,可以去各linux厂家站点或者www.kernel.org下载。
2、清除从前编译内核时残留的.o
文件和不必要的关联
cd
/usr/src/linux
make
mrproper
3、配置内核,修改相关参数,请参考其他资料
在图形界面下,make
xconfig;字符界面下,make
menuconfig
在内核配置菜单中正确设置个内核选项,保存退出
4、正确设置关联文件
make
dep
5、编译内核
对于大内核(比如需要SCSI支持),make
bzImage
对于小内核,make
zImage

㈨ 内核编译以及如何得到kernel

注:不仅要对机器本身有了解,还要对Linux系统有一定的了解)有一定的理解——这是一个难题。
因此一个Linux新手是根本不会尝试编译内核的。这篇文章中展示了一些在使用“make xconfig”命令编译内核过程中的截图。
使用这个命令(“make xconfig”),用户可以通过图形用户界面(GUI)和鼠标来对内核进行处理。
这里有差不多40张截图,它们解释了在某种特定的情况下为什么你需要或不能选择某个特定的内核选项(options)。
将这40幅截图逐一讨论看上去似乎有些夸张,但这的确是解释内核的内部工作机理(internal
workings)以及特定内核选项存在的原因和工作原理的比较好的方法。
这些截图是kernel-2.4.6的。最新的内核是2.4.19,但是除去在菜单中有一些新的项目(e.g.对新硬件的支持)以外,
屏幕的显示以及编译的过程应该是一样的。建议你在开始编译前把这篇文章打印出来,这样你就可以随时查找必要的信息!
本文的结构如下。首先讨论你在Internet的什么地方能够找到内核的源码以及如何安装这些源码,
然后通过屏幕截图讨论使用图形界面配置内核。 一旦内核配置完毕,它就需要被编译,但是一个新编译的内核并不能直接使用。
首先,新内核需要和引导程序“lilo”一起安装,然后,在使用lilo前你必须写配置文件“/etc/lilo.conf”。
另外,还有需要指出一些特殊的要点(specific points),比如笔记本电脑需要的PCMCIA支持。
看上去象信用卡的PCMCIA,小型板卡(small inserts)通常负责联网任务,在2.4.x的内核中已经可以直接提供支持。
但之前的内核需要重新编译安装后才能提供PCMCIA支持。SuSE Linux还有一个问题,那就是ALSA声卡驱动程序的音效支持。
这些驱动程序并不是内核的一部分,它们需要被编译进去然后重新安装,因为原始的驱动程序通常没有工作。
更麻烦的是,从一个系列的内核转到另一个系列的内核,比如从2.2.x系列转到2.4.x系列, 可能会由于使用某种(某些)内核工具(kernel
utilities)而产生一些问题。 这就是所谓的“motils”(译者注:可以看为“Moles
Utilities”的所写,这样就不会对这个名称感到费解了),包括代码(code)需要载入(load)的内核模块(kernel
mole):图3解释了什么是内核模块。 有时新内核不知道如何处理老的motils,所以你必须编译和安装更新版本的motils。
这样的问题虽然不多但是它们的确存在,而且目前只能预先指出它们。
但是如果你完全按照本文的步骤进行,几乎不会发生错误。新内核被添加到lilo,或者被复制()到loadlin所在的分区。
因此,在紧急情况下,你仍然可以通过老内核启动机器。然后可以在老内核下试着解决新内核的问题。
即使你遇到motils的问题,你也可以从老内核重新启动计算机,然后通过将它们(内核和motils)分别编译和安装来修复(fix)这个问
题: 所有新版本的motils都对老内核向下兼容,所以新motils在老内核下可以很好的工作。

热点内容
unicode转中文python 发布:2025-02-07 12:45:21 浏览:287
学习python用什么软件 发布:2025-02-07 12:45:15 浏览:611
怎么看bin文件编译日期 发布:2025-02-07 12:44:27 浏览:390
怎么启动ftp服务 发布:2025-02-07 12:27:46 浏览:865
拜托别黑我ftp 发布:2025-02-07 12:25:22 浏览:170
评价web服务器的标准是什么 发布:2025-02-07 12:24:37 浏览:444
opencvpython34 发布:2025-02-07 12:23:44 浏览:153
androidondraw调用 发布:2025-02-07 12:09:22 浏览:189
linuxkill进程 发布:2025-02-07 12:09:17 浏览:197
c语言sqrt函数怎么用 发布:2025-02-07 12:07:48 浏览:896