导航:首页 > 源码编译 > 如何对系统编译

如何对系统编译

发布时间:2023-01-07 23:19:13

⑴ 如何自己编译linux操作系统

编译这个难啊,还要网速允许
你可以编译
gentoo单纯的自己编译一个不属于任何现在的版本可能不是一
般人可以做到的

⑵ 32位系统如何编译android4.4

方法步骤:第一步:编译Android 源代码
第二部:安装jdk
第三部:安装编译所需的工具
第四步:设置高速缓存加快编译速度
编译系统的要求
第一步:编译Android 源代码,Android官方推荐64位的ubuntu系统,最好是10.04的,对于10.10、11.10、12.04版本的ubuntu系统也是可以,但是小编一直习惯使用10.04的,所以几年来一直沿用至今
请不要使用32位的Ubuntu系统,更不要使用10.04以下的ubuntu系统,不然编译会出现很多都问题,会浪费更多的时间,有的比较难解决,对于新人来说,还不如重新安装一个64位的ubuntu系统
下面小编来说说怎么样查看当前安装好的ubuntu系统是多少位的
按照下图所示的方法打开终端,然后输入命令并执行 uname -ar,在最后输出的信息中如果有amd64或者 x86_64 字样,那么就说明是64位的系统了,否则就是32位的系统了
android4.4源码编译环境搭建
第二部:安装jdk
1jdk的安装,虽然Android官方还是有介绍,现在jdk的安装已经不支持使用添加源,然后用命令安装了,只能取java官网下载jdk,然后安装,然后将jdk的路劲添加到环境变量中,具体的安装和添加变量的方法,可以查看本文参考资料中的文档介绍,这里就不过多说明了
另外需说明的是,对于2.3版本以后的Android,需要使用jdk6,即jdk1.6,而不要使用jdk1.7的
android4.4源码编译环境搭建
2对于安装好的jdk,并且添加了环境变量,我们可以输入并执行命令java -version 来查看jdk版本,若是有类似下面的信息输入,那么说明jdk安装成功了
android4.4源码编译环境搭建
END
第三部:安装编译所需的工具
1对于10.04的系统,我们只需要安装下面这些软件工具就可以了,直接复制到终端中,然后回车执行安装就ok,安装前保持电脑正常连接网络
sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \
libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
libxml2-utils xsltproc
android4.4源码编译环境搭建
2对于10.10的ubuntu系统,需要先安装下面的工具软件,直接输入执行下面的命令就可以安装:
sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \
libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
libxml2-utils xsltproc
android4.4源码编译环境搭建
3之后使用下面的命令做一个软链接文件:
sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so
android4.4源码编译环境搭建
4对于11.10的ubuntu系统,需要先安装下面的工具,输入并执行下面的命令:
sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \
libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
libxml2-utils xsltproc
android4.4源码编译环境搭建
5然后再安装这个对于11.10系统特别需要的工具
sudo apt-get install libx11-dev:i386
android4.4源码编译环境搭建
第四步:设置高速缓存加快编译速度
设置告诉缓存可以加快我们的编译速度,对于配置不是很高的电脑,最好是进行这个设置,这样可以为我们节约很多都时间
先用vi或者gedit软件打开宿主目录下的.bashrc文件,然后在文件的最后添加:
export USE_CCACHE=1
之后保存退出,重新登陆系统,使设置生效
android4.4源码编译环境搭建
2在终端中,切换到源码根目录中,然后执行下面的命令,设置ccache的大小
prebuilts/misc/linux-x86/ccache/ccache -M 50G
其实ccache就是一个执行文件,后面的-M和50G是传递给ccache的参数,表示设置50G的缓存空间,这个大小可以根据我们的时间需要来修改
注意事项:
如果觉得小编的经验还不错,请点击右边的“关注TA”和“投票TA”,以方便随时学习了解其他相关经验

⑶ 如何编译Linux操作系统的源代码

首先uname
-r看一下你当前的linux内核版本
1、linux的源码是在/usr/src这个目录下,此目录有你电脑上各个版本的linux内核源代码,用uname
-r命令可以查看你当前使用的是哪套内核,你把你下载的内核源码也保存到这个目录之下。
2、配置内核
make
menuconfig,根据你的需要来进行选择,设置完保存之后会在当前目录下生成.config配置文件,以后的编译会根据这个来有选择的编译。
3、编译,依次执行make、make
bzImage、make
moles、make
moles
4、安装,make
install
5、.创建系统启动映像,到
/boot
目录下,执行
mkinitramfs
-o
initrd.img-2.6.36
2.6.36
6、修改启动项,因为你在启动的时候会出现多个内核供你选择,此事要选择你刚编译的那个版本,如果你的电脑没有等待时间,就会进入默认的,默认的那个取决于
/boot/grub/grub.cfg
文件的设置,找到if
[
"${linux_gfx_mode}"
!=
"text"
]这行,他的第一个就是你默认启动的那个内核,如果你刚编译的内核是在下面,就把代表这个内核的几行代码移到第一位如:
menuentry
'Ubuntu,
with
Linux
3.2.0-35-generic'
--class
ubuntu
--class
gnu-linux
--class
gnu
--class
os
{
recordfail
gfxmode
$linux_gfx_mode
insmod
gzio
insmod
part_msdos
insmod
ext2
set
root='(hd0,msdos1)'
search
--no-floppy
--fs-uuid
--set=root
9961c170-2566-41ac-8155-18f231c1bea5
linux/boot/vmlinuz-3.2.0-35-generic
root=UUID=9961c170-2566-41ac-8155-18f231c1bea5
ro
quiet
splash
$vt_handoff
initrd/boot/initrd.img-3.2.0-35-generic
}
当然你也可以修改
set
default="0"来决定用哪个,看看你的内核在第几位,default就填几,不过我用过这种方法,貌似不好用。
重启过后你编译的内核源码就成功地运行了,如果出现问题,比如鼠标不能用,usb不识别等问题就好好查查你的make
menuconfig这一步,改好后就万事ok了。
最后再用uname
-r看看你的linux内核版本。是不是你刚下的那个呢!有没有成就感?

⑷ 如何编译一个精简的Android系统

本次试验使用的android源码是4.2,编译的架构是mini-mips。

一、所做的工作
1、修改build/target/proct/mini.mk,去掉一些不必要的模块(例如Phone、DownloadManager等)
2、修改SystemServer.java,屏蔽一些service,让系统能够启动起来(例如,Location Manager、Telephony Registry)
3、修改dalvik/vm/native/dalvik_system_Zygote.cpp,注释掉因为检查不到外部存储而导致dalvik abort的地方 (这是googel的一个bug,在2013年1月份已解决,如果用这以后的代码不用修改此处)
4、修改WindowManagerService.java,把发送BOOT_TIMEOUT消息的时间改为0(之前为30秒)

二、系统优化后的效果(验证工作均在mips模拟器上进行)
1、节省运行内存,下面是全编译与mini编译的内存使用状态的对比
1)full build
MemTotal: 499360 kB
MemFree: 242064 kB
2)mini build
MemTotal: 499360 kB
MemFree: 395192 kB

2、缩短开机启动时间
在虚拟机上的启动时间
1)full build-29秒
2)mini build-14秒

3、只启动home程序,其余的应用程序均被移除

三、保留android的开发环境
1、adb,ddms,apkinstall等,都能正常工作
2、在eclipse中编写的android应用程序能够运行在该mini-android之上

四、开机自动启动指定应用程序
本次测试使用Gallery.apk应用程序,修改其源码后可以实现随系统的启动而自动启动的功能。

⑸ 如何用gentoo交叉编译一个基本系统

嵌入式系统的编译环境
为某个平台开发软件,首先需要一个编译环境。一般来说,编译环境包括三部分:工具 链/运行环境/编译方法。对于嵌入式系统来说,常见的编译环境有三种:

本地环境。如很流行的Ubuntu for ARM,利用官方制作好的目标机镜像(通常包含了 编译环境),直接在目标机上编译/安装软件,与PC机开发完全一样。这种方法简单省 事。缺点也显而易见,编译速度慢,耗时长,特别是较大的软件包(如xbmc)的时候, 程序员不是停下来喝杯咖啡就可以收摊,恐怕得打场通宵dota后才能看到结果 了…(或许distcc能有所改善)

虚拟环境。在PC上建立目标机的虚拟环境,如QEMU-ARM,然后chroot到虚拟环境 中编译/安装软件。这种方法利用了PC的处理能力,速度比本地环境要快得多,但 QEMU并不能完美的模拟目标机环境,如不支持某些系统调用等,这可能导致它不能 正确的编译某些软件。

交叉编译。为目标机交叉编译软件,这是最常规的办法,也是上面两种方法实现的基 础。说交叉编译是“脏活”,是因为需要手工解决软件包的所有依赖问题,手工编译 每一个软件包,并且解决软件包对目标机兼容问题… 看网上铺天盖地关于求教/指导 某个软件包如何正确交叉编译就知道,有多少程序员在被它虐?

gentoo下的交叉编译
gentoo是一个metadistribution,从源代码构建整个系统,同时支持很多不同的体 系如alpha/arm/hppa/ppc/sh/sparc/s390等,也为交叉编译提供了便利的工具,这是 其它二进制发行版没有办法比拟的(scratchbox也显得弱爆了)。

gentoo下的交叉编译通过crossdev和portage来实现。portage带来的好处是自 动解决依赖和自动升级更新系统,跟本机环境一样。

制作工具链
crossdev用来制作交叉工具链,并且还提供了交叉编译环境下的emerge的辅助脚本。如 下编译arm平台的工具链:

$ sudo crossdev -t arm-supertux-linux-gnueabi
这样,crossdev最终制作了符合“gentoo规范”的arm交叉编译器。

运行环境
crossdev生成/usr/arm-supertux-linux-gnueabi/目录作为目标系统 $buildroot。编译后生成的目标会被emerge到$buildroot,编译时依赖的环境(如 链接库/头文件/pkgconfig等)也都在$buildroot。

交叉编译
有了工具链/运行环境,使用的crossdev封装过的emerge,就可以自由的emerge了。 如交叉编译bash:

$ sudo emerge-arm-supertux-linux-gnueabi -avu bash
porage会自动把bash的依赖如ncurses/readline一起emerge到$buildroot。 交叉编译就是变得如此简单…

碰到的问题
站在巨人的肩膀上可以看的更远,前提是我们先要爬上巨人的肩膀。portage是一个快 速更新迭代的系统,并不完美,维护者没有办法测试每个软件包的所有兼容性。所以, 当你想安装一个图形环境如$emerge -avu enlightenment时,很可能会出现错误。但 portage提供了细粒度的控制帮助解决这样的问题。下面是我碰到过一些情形和解决方 法:

由于软件包的环境变量引起的问题,如链接库指向了/usr/bin,而非 $buildroot。可以配置$buldroot/etc/portage/env/目录下相应的文 件,portage会自动source该文件,从而改变编译时的环境。

portage没有包含该软件或portage自身的bug引起,如默认使能了某个在目标机 平台不能使用的特性。建立一个针对目标机的overlay,自己编写相应软件包的 ebuild文件指导portage进行交叉编译。

当某个软件包分阶段编译时,如perl编译时先生成miniperl,通过miniperl最 后生成perl目标映像。由于miniperl被交叉编译器生成目标机的映像,正常情况 下不能主机环境中继续运行生成最终的目标映像。这就要借助qemu-arm+binfmt模 拟目标机环境,让miniperl在主机环境中也能无缝的运行。

从形式上看,处理上面几种情况,也是“脏活”。不仅需要了解该软件包的编译环境, 还需要了解portage的原理,还要知道ebuild的书写语法。但是,与传统的交叉编译 方式比起来,这是一劳永逸的工作,别人使用我的运行环境和overlay,即不需再做什 么就能生成最终的目标机系统。

阅读全文

与如何对系统编译相关的资料

热点内容
苹果app怎么开启权限 浏览:677
排序算法图解 浏览:991
算法如何规制 浏览:866
单片机继电器驱动 浏览:659
小薯仔编程软件下载 浏览:153
单片机opencv 浏览:257
千锋python人工智能培训 浏览:856
合理的文件夹划分 浏览:258
十点读书app哪里下载 浏览:964
uu跑腿押金上app在哪里解约 浏览:37
华为如何将app移到桌面 浏览:597
阿里安卓面试算法题 浏览:705
语文知识手册pdf 浏览:841
为什么安卓手机oled屏很白很亮 浏览:252
如何找回iphone手机隐藏的app 浏览:21
linuxc多进程 浏览:649
android飞行游戏 浏览:965
数据挖掘常见算法 浏览:135
python单实例化 浏览:351
str中python 浏览:89