【4】源码编译与Image烧写

【4】源码编译与Image烧写
【4】源码编译与Image烧写

四、源码编译与Image烧写

4.1 LTIB简介

LTIB(Linux Target Image Builder)是一个能够用于为各种目标平台开发和部署BSP(Board Support Package)的简单工具。用户可以使用该工具为他们的目标平台开发GNU/Linux映像。LTIB支持PPC,ARM,Coldfire等多种目标架构。包含超过200个用户使用的工具包以及通用跨平台的根文件系统。LTIB支持bootloader和内核映像的构建。编译时可对交叉编译工具进行选择。支持RAMDISK和JFFS2 Flash映像的创建。实际上,LTIB是一系列脚本和管理方法的集合。开发者可以将源代码或开源软件包配置,编译,部署和压缩,成为可以烧写到flash上的bootloader,kernel和root file system映像。而这一切作都是通过./ltib命令加上选项和参数实现的。

想要了解LTIB的详情可登录网站https://www.360docs.net/doc/7c5857270.html,/projects/ltib/查看。

4.2 LTIB安装准备工作

在正式安装LTIB之前,我们需要先进行一些准备性的工作。将分为如下几个步骤:

步骤一:打开虚拟机的Ubuntu系统,选择“Applications”,“Accessories”,“Terminal”,打开命令行界面,如图4.1所示。

图4.1 打开Terminal

步骤二:在/opt 文件夹下建立可执行的目录“freescale”,命令如下:sudo mkdir /opt/freescale

cd /opt

sudo chmod 777 freescale

步骤三:运行“sudo visudo”命令,我们就可以编辑需要超级用户权限的文件了。

将下面一行添加到文件的末尾(注意其中带有的空格),这样普通用户,在该Ubuntu主机上的开发板具有管理员权限,这是运行LTIB所必需的。添加完毕Ctrl+X退出,选择Y保存修改后按回车键退出。

%yang ALL = NOPASSWD: /usr/bin/rpm, /opt/freescale/ltib/usr/bin/rpm, /opt/freescale

%root ALL = NOPASSWD: /usr/bin/rpm, /opt/freescale/ltib/usr/bin/rpm, /opt/freescale

步骤四:在Ubuntu桌面系统上选择“System”——“Administration”——“Update Manager”,点击“Settings”,打开“Updates”一栏,在“Release upgrade”中下拉选择“Never”。点击“close”关闭设置对话框后,点击“check”检查更新,然后点击“Install”安装更新。第一次安装可能需要一段时间。

步骤五:安装LTIB所需要的软件包,在命令行界面输入如下命令:

sudo aptitude -y install gettext libgtk2.0-dev rpm bison m4 libfreetype6-dev

sudo aptitude -y install libdbus-glib-1-dev liborbit2-dev intltool

sudo aptitude -y install ccache ncurses-dev zlib1g zlib1g-dev gcc g++ libtool

sudo aptitude -y install uuid-dev liblzo2-dev

sudo aptitude -y install tcl dpkg

这是32位系统下所需的安装包,如果Ubuntu是64位系统,还需要如下安装命令:

sudo aptitude -y install ia32-libs libc6-dev-i386 lib32z1

步骤六:接下来安装Linux开发所需要的软件安装包,在命令行界面输入如下命令:

sudo aptitude -y install gparted emacs22-nox openssh-server

sudo aptitude -y install nfs-common nfs-kernel-server lintian

sudo aptitude -y install git-core git-doc git-email git-gui gitk

sudo aptitude -y install diffstat indent tofrodos fakeroot doxygen uboot-mkimage

sudo aptitude -y install sendmail mailutils meld atftpd sharutils

sudo aptitude -y install manpages-dev manpages-posix manpages-posix-dev linux-doc

sudo aptitude -y install vnc4server xvnc4viewer

4.2 LTIB的安装和使用

在完成了前面的准备工作后,就可以进行LTIB的安装了。安装过程将分为如下几个步骤进行:

步骤一:将名称为“L2.6.35_11.09.01_ER_source.tar.gz”的压缩包拷贝到UBTShare 共享文件夹下,打开虚拟机的Ubuntu系统,开启Terminal。

步骤二:解压该压缩包,使用如下命令:

tar zxf L2.6.35_11.09.01_ER_source.tar.gz

步骤三:安装LTIB,在普通用户权限下输入如下安装命令:

./L2.6.35_11.09.01_ER_source/install

询问是否安装时输入“y”,接下来是软件安装协议,输入“q”可跳过阅读,输入

“yes”,最后输入安装LTIB所在的目录,输入“/opt/freescale”,开始执行安装过程。

步骤四:最后进入安装目录,完成安装,输入命令如下:

cd /opt/freescale/ltib

$sudo ./ltib

第一次运行可能需要一段比较长的时间,因为有许多主机包需要编译和安装以便支持LTIB。等主机安装完成后,会出现一个蓝色的屏幕(同内核的menuconfig相似),如图4.2所示。

图4.2 LTIB平台选择配置界面

步骤五:在这里,你可以选择希望的平台。通过方向键移动蓝色选择框来进行各种选项的选择。首先平台选择“Freescale iMX reference boards”,然后移动到“Exit”上,按回车键退出并在询问是否保存配置时选择Yes。这样进入开发平台配置界面,如图4.3所示。

图4.3 LTIB开发平台配置界面

步骤六:在图4.3所示配置界面中选择平台类型为“imx5x”,选择包配置文件为“FSL gnome release package”,然后将蓝色选择框移动到“Exit”上,按回车键退出并在询问是否保存配置时选择Yes。这样进入开发板配置界面,如图4.4所示。

图4.4 LTIB开发板配置界面

步骤七:在开发板配置界面中,大部分配置都采用默认选项,在“Choose your board for uboot”部分选择“board(mx53_loco)”,“Exit”退出并保存配置,退出后LTIB即自动开始运行编译。

注意:在第一次安装LTIB时,步骤六中,可能在“Choose your board for uboot”部分没有选项可供选择,此时可以直接“Exit”退出,再输入如下命令重新进入配置界面,按照上述配置步骤正确配置即可。

cd /opt/freescale/ltib

$sudo ./ltib -m config

然后运行如下命令开始编译U-boot和Linux kernel。

sudo ./ltib

第一次编译会花费很长的时间,具体取决于主机的配置。普通情况通常为两个小时左右。编译完成后,uboot映像和Linux kernel映像位于目录/opt/freescale/ltib/rootfs/boot 下,如图4.5所示。

图4.5 编译完成的Image映像文件

这样,就完成了安装LTIB和使用LTIB进行i.MX53开发板U-boot和Linux kernel以及rootfs的编译。

4.3 制作系统启动卡

编译完成后,就可以将U-boot、Linux kernel的Image映像和文件系统rootfs 烧写进开发板附带的TF卡中,制作系统启动卡了。烧写步骤如下:

步骤一:在虚拟机的Ubuntu系统运行的状态下,将开发板附带的TF卡插入读卡器中,并将读卡器插入到电脑的USB接口上。可以看到Ubuntu系统的桌面上出现一个优盘图标。为了确定Linux系统分配给TF卡的设备节点,以便接下来使用dd命令Image将在Terminal中执行命令:

cat /proc/partitions

在本次实验中查看到TF卡设备节点号为“sdb”,因此该TF卡位于/dev/sdb 路径下,如图4.6所示。

图4.6 查看TF卡的设备节点号

为方便后面的分区格式化,此处还要执行命令:

umount /dev/sdb1

步骤二:进入/opt/freescale/ltib/rootfs/boot目录下,在Terminal中输入:cd /opt/freescale/ltib/rootfs/boot

使用dd命令将U-boot映像复制到TF卡中,该命令的作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。详细了解该命令可自行上网搜索。本实验中使用命令如下:

$ sudo dd if=u-boot.bin of=/dev/sdb bs=512 && sync && sync

复制完成后如图4.7所示。

图4.7 将U-boot映像复制到TF卡中

步骤三:同样使用dd命令将Linux kernel映像复制到TF卡中,输入命令如下:$ sudo dd if=uImage of=/dev/sdb bs=512 seek=2048 && sync && sync

复制完成后如图4.8所示。

图4.8 将Linux kernel映像复制到TF卡中

步骤四:接下来的几个步骤就是复制文件系统rootfs了。首先,在本步骤中使用fdisk对TF卡进行分区。fdisk是一种Linux系统分区工具,详细了解该命令可自行上网搜索。在本实验中使用fdisk和其相关命令如下:

$ sudo fdisk /dev/sdb

在每输入以下一个命令时,按回车键确认输入。

u【将存储单位由柱面转换为扇区】

d【重复该操作,直到没有p命令的分区提示(这里只要显示“No partition is defined yet!:即可)】

n【创建一个新的分区】

p【创建一个主分区】

1【选择分区号1】

8192 【选择文件系统第一个扇区的起始偏移量为#8192,即4MB的空间,为kernel和bootloader以及它们的配置数据留下足够的空间】 【此处直接输入回车键,即采用默认选项,创建一个从偏移量为#8192到TF 卡最后一个扇区的分区】

w【写入分区表并退出fdisk】

分区完成后,显示如图4.9所示。

图4.9 使用fdisk完成分区工作

步骤五:格式化分区,推荐ext3或ext4的文件系统格式,本实验中选择ext3,,输入命令如下:

$ sudo mkfs.ext3 /dev/sdb1

格式化过程如图4.10所示。

图4.10 将分区格式化为ext3文件系统

步骤六:将目标文件系统rootfs复制到分区中。

首先在用户目录下(本实验中用户目录为/home/yang)建立一个挂载点,将sdb1挂载到挂载点上,输入命令如下:

$ mkdir /home/yang/mountpoint

$ sudo mount /dev/sdb1 /home/yang/mountpoint

然后进入文件系统所在的目录,在本实验中即执行命令:

$ cd /opt/freescale/ltib/rootfs

执行复制命令如下:

$ sudo cp -rpa [A-z]* /home/yang/mountpoint

等待一段时间,复制完成后,最后卸载位于挂载点的设备,执行卸载命令:$ sudo umount /home/yang/mountpoint

至此,Linux系统启动卡制作完成。

补充:

原始出厂的源码包不支持触摸屏驱动,通用GPIO驱动(蜂鸣器),以UART2,需要添加相关的驱动文件,进行一定的配置。具体步骤如下:

1)Linux内核源码位于/opt/freescale/ltib/rpm/BUILD/linux ,接下来的操作都是

在该文件目录下进行修改。

2)将光盘中touchscreen文件夹拷贝到UBTShare共享文件夹下,打开虚拟机的

Ubuntu系统,开启Terminal,进入Linux内核源码目录:

$ cd /opt/freescale/ltib/rpm/BUILD/linux

3)添加触摸屏驱动,将共享文件夹下touchscreen文件夹中以ft开头的文件,

Makefile文件和Kconfig文件全部拷贝到drivers/input/touchscreen 目录下:$ cp /mnt/hgfs/UBTShare/touchscreen/ft* drivers/input/touchscreen/

$ cp /mnt/hgfs/UBTShare/touchscreen/Makefile drivers/input/touchscreen/Makefile

$ cp /mnt/hgfs/UBTShare/touchscreen/Kconfig drivers/input/touchscreen/Kconfig

4)替换板级文件,将共享文件夹下touchscreen文件夹中mx53_loco.c文件替换

arch/arm/mach-mx5/目录中的mx53_loco.c文件:

$ cp /mnt/hgfs/UBTShare/touchscreen/mx53_loco.c arch/arm/mach-mx5/mx53_loco.c

5)编译Linux内核,输入$ sudo make ARCH=arm

CROSS_COMPILE=/opt/freescale/usr/local/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin/arm-none-linux-gnueabi- menuconfig ,进入Linux内核配置界面,在这里可以配置Linux的内核功能,添加对通用GPIO库的支持。依次选择Device Drivers ---> GPIO Support ---> /sys/class/gpio/...(sysfs interface),在选中GPIO Support时输入y,最后选中/sys/class/gpio/...(sysfs interface)时输入y 选中通用GPIO驱动功能,功能左边出现一个“*”,表示将该功能静态编译进内核,如下三图所示。

6)同上一步类似,添加内核对触摸屏驱动的支持。依次选择Device Drivers --->

Input device support ---> Touchscreens ---> ft5x06 touchscreen,最后输入m选中触摸屏驱动,表示将该驱动编译成内核模块。如下四图所示。

7)退出配置界面,在询问是否保存配置时选择Yes。编译Linux内核,输入命

令如下:

$ make ARCH=arm

CROSS_COMPILE=/opt/freescale/usr/local/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux -gnueabi/bin/arm-none-linux-gnueabi- uImage

编译好的Linux内核文件名为uImage ,位于arch/arm/boot/ 目录下。

8)按照4.3-制作系统启动卡步骤一的方法,将插入Linux系统启动卡的读卡器

挂载到Ubuntu主机上,使用dd命令下载uImage内核文件到系统启动卡中,输入命令如下:

$ sudo dd if=arch/arm/boot/uImage of=/dev/sdb bs=512 seek=2048 && sync

$ umount /media/ff78563f-07cf-4e040-8e36-60f90a8aff56 (以f开头,按Tab键可自动补齐)

————————————————END ———————————————

Android源码编译

Android源码编译 开发工具:Ubuntu10.04 在Ubuntu下使用root用户登录,注意root一开始是锁定的,使用如下命令解锁:sudopasswd root 按回车铵,提示输入当前密码,在提示输入二次密码。输入完成切换用户使用root用户登录。 Android源码结构 Makefile (全局的Makefile) bionic (Bionic含义为仿生,这里面是一些基础的库的源代码) bootloader(引导加载器) build (build目录中的内容不是目标所用的代码,而是编译和配置所需要的脚本和工具) dalvik (JAVA虚拟机) development(程序开发所需要的模板和工具) external (目标机器使用的一些库) frameworks (应用程序的框架层) hardware (与硬件相关的库) kernel (Linux2.6的源代码) packages (Android的各种应用程序) prebuil (Android在各种平台下编译的预置脚本) recovery (与目标的恢复功能相关) system (Android的底层的一些库) Out (编译好的文件) 编译Android源码必需的安装的软件包 g++库文件有可能Ubuntu自带,使用g++ -v命令查找是否安装,如果没有自带请手动安装,使用如下命令,sudo apt-get-install g++-4.4. 注意:g++分很多版本,如果使用了最新版本4.6将没办法编译,建议安装4.4版本 Gcc库文件有可能Ubuntu自带,使用gcc–v命令查找是否安装,如果没有自带使用如下命令手动安装,sudo apt-get-install gcc-4.4. 注意:gcc分很多版本,如果使用了最新版本4.6将没办法编译,建议安装4.4版本 不过还有一些应该是linux系统自带的,如果缺少就按照提示install一下sudo apt-get install build-essential sudo apt-get install make sudo apt-get install libc6-dev sudo apt-get install patch sudo apt-get install texinfo sudo apt-get install libncurses-dev

android源代码下载和编译教程

Android源代码由两部分组成,其一是Android系统应用部分的代码,其次是Android 所使用的内核代码,如果针对Google Nexus S来开发ROM,就需要下载三星的内核代码Android 系统应用代码: https://https://www.360docs.net/doc/7c5857270.html,/platform/manifest Android内核代码: https://https://www.360docs.net/doc/7c5857270.html,/kernel/samsung.git 准备阶段:设置Linux编译环境(本人是Ubuntu 11.10 ,32位系统),一般你需要以下配置: Python 2.5 -- 2.7. GNU Make 3.81 -- 3.82,, JDK 6 (for Gingerbread or newer); JDK 5( for Froyo or older). Git 1.7 or newer. 1、安装一些必备的包。 Git是Linux Torvalds为了帮助管理Linux内核而开发的一个开放源码的分布式版本控制系统软件,它不同于SVN,CVS这样集中式的版本控制系统。在集中式版本控制系统中只有一个仓库(repository),许多个工作目录,而git这样的分布式控制系统中,每一个工作目录都包含一个完整仓库,它们支持离线工作,本地提交可以稍后提交到服务器上。分布式系统理论上也比集中式的单服务器系统更健壮,单服务器系统一旦服务器出现问题整个系统就不能运行了,分布式系统通常不会因为一两个节点而收到影响? 因为Android是由kernel,Dalvik,Bionic,prebuild,build等多个Git项目组成, 所以Android项目编写了一个名为repo的python的脚本来统一管理这些项目的仓库,使得Git的使用更加简单。 $ 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 $ sudo apt-get install libx11-dev:i386 2、创建源代码目录 首先确保在当前用户的主目录下创建一个/bin目录(如果没有的话),然后把它加到PATH 环境变量中: $ mkdir ~/bin $ PATH=~/bin:$PATH 或者$export PATH=$PATH:~/bin 3、用curl下载repo脚本,并保存在~/bin/repo文件中: $ curl https://https://www.360docs.net/doc/7c5857270.html,/dl/googlesource/git-repo/repo > ~/bin/repo 为repo加上执行权限 $ chmod a+x ~/bin/repo 4、初始化版本库 首先建立一个目录,用来存放下载下来的东西 $mkdir MyAndroid $cd MyAndroid 以后,执行如下命令 $ repo init -u https://https://www.360docs.net/doc/7c5857270.html,/platform/manifest -b android-2.3.7_r1 我这里下载的是android2.3.7版本的,所用的参数是android-2.3.7_r1。由于最新的是android-4.0.3_r1,所以使用上面即可下载2.3.7的源代码 注意:如果要是把所有的版本都下载下来,那时间是需要很久很久的,需要耐心等待,但是如果仅仅是下载某一个版本的话,还是很快就可以了。 最后,如果看到repo initialized in /MyAnroid的提示,说明本地的版本库已经初始化成功了(期间需要你填写姓名和Gmail地址)。

Android_4.2_源码下载和编译环境安装及Android_4.2_源码编译

Android 4.2源码的下载和编译环境的安装及源码的编译Google于2012.11.14发布了Android4.2的源码,下面把本人在ubuntu10.04 的64位 系统上下载源码,和编译源码做个记录备份,也供有需要的人参考,若是在下载编译安装Android源代码遇到问题,可加QQ群交流: 217706590,难免有错,敬请见谅,还忘勿吝啬指出。 源代码下载、编译环境安装、源代码编译和运行模拟器的可能出现的一些错误在本文最后一章节,若出现类似错误,可以参考。 1、源码的下载 源代码的下载,首先需要安装以下软件:curl 和git-core 1.1安装curl: 在终端中执行:sudo apt-get install curl 1.2安装git-core 1.2.1在用户目录下新建bin文件 在终端中执行:mkdir ~/bin 将~/bin添加环境变量,作用是:要将git软件下载安装在此目录,在别的目录运行可能会找不到此软件,所以要添加到环境变量中 在终端中执行:PA TH=~/bin:$PATH 1.2.2安装git-core 在终端中执行:curl https://https://www.360docs.net/doc/7c5857270.html,/dl/googlesource/git-repo/repo§> ~/bin/repo 给repo执行权限:chmod a+x ~/bin/repo 1.3 下载源代码 1.3.1进入要源代码将要保存的目录 如我的源代码保存在:、/opt/android/src 在终端中执行:cd /opt/android/src 进入到src目录中 1.3.2 获取repo最新的配置 repo init -u https://https://www.360docs.net/doc/7c5857270.html,/platform/manifest§ 若是执行错误则用以下命令: ~/bin/repo init -u https://https://www.360docs.net/doc/7c5857270.html,/platform/manifest§ 1.3.3 下载源代码 对于下载不同版本的android,指定一个manifest分支(即只指明android对应的版

hadoop3.0.0源码编译

1. 2.编译步骤 (1)jdk安装和部署 1.安装jdk cd /home/lly/下载/hadoop/ rpm –ivhjdk-8u101-linux-x64.rpm 2.添加环境变量 $sudo vim /etc/profile 3.加入如下内容 export JAVA_HOME=/usr/java/jdk1.8.0_101 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$JAVA_HOME/lib:$JER_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JER_HOME/bin:$PATH 按”esc” :w :q 4.立刻应用改变 $sudo source /etc/profile 5.测试 java –version java version "1.8.0_101" Java(TM) SE Runtime Environment (build 1.8.0_101-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode) (2)maven安装和部署 1.解压 cd /home/lly/下载/hadoop/ tarzxvfapache-maven-3.3.9-bin.tar.gz -C /usr/soft 2.添加环境变量 $sudo vim /etc/profile

3.加入如下内容 export MAVEN_HOME=/usr/soft/apache-maven-3.3.3 export PATH=.:$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin 按”esc” :w :q 4.立刻应用改变 $sudo source /etc/profile 5.测试 mvn -version Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00) Maven home: /usr/soft/apache-maven-3.3.9 Java version: 1.8.0_101, vendor: Oracle Corporation Java home: /usr/java/jdk1.8.0_101/jre (3)依赖安装 1.输入命令 $sudoyum install g++ autoconfautomakelibtoolcmakezlib1g-dev pkg-configlibssl-de (4)安装cmake 1.解压 cd /home/lly/下载/hadoop/ tarzxvfcmake-3.6.2.tar.gz -C /usr/soft 2.安装 cd/usr/soft/cmake-3.6.2 ./bootstrap make make install 3.测试 cmake–version (5)安装protobuf 1.解压 cd /home/lly/下载/hadoop/ tarzxvfprotobuf-2.5.0.tar.gz -C /usr/soft 2.安装 cd/usr/soft/protobuf-2.5.0 ./configure --prefix=/usr/soft/protobuf-2.5.0 make

Ubuntu下编译Android源码全过程

Ubuntu下编译Android源码全过程(转) 源码, 编译, Ubuntu, Android 一、获取Android源代码 Git是LinuxTorvalds(Linux之父)为了帮助管理Linux内核开发而开发的一个开放源码的分布式版本控制软件,它不同于Subversion、CVS这样的集中式版本控制系统。在集中式版本控制系统中只有一个仓库(Repository),许多个工作目录(WorkingCopy),而在Git这样的分布式版本控制系统中(其他主要的分布式版本控制系统还有BitKeeper、Mercurial、GNUArch、Bazaar、Darcs、SVK、Monotone等),每一个工作目录都包含一个完整仓库,它们支持离线工作,本地提交可以稍后提交到服务器上。 因为Android是由Kernel、Dalvik、Bionic、Prebuilt、build等多个项目组成,如果我们分别使用Git来逐个获取显得很麻烦,所以Android项目编写了一个名为Repo的Python 的脚本来统一管理这些项目的仓库,使得项目的获取更加简单。 在Ubuntu 8.04上安装Git只需要设定正确的更新源,然后使用apt-get就可以了,apt-get 是一条Linux命令,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或 操作系统。 apt-get命令一般需要root权限执行,所以一般跟着sudo命令。 sudo apt-get install git-core curl 这条命令会从互联网的软件仓库中安装git-core和curl。 其中curl是一个利用URL语法在命令行方式下工作的文件传输工具,它支持很多协议,包括FTP、FTPS、HTTP、HTTPS、TELENT等,我们需要安装它从网络上获取Repo脚本文件。 curl https://www.360docs.net/doc/7c5857270.html,/repo >~/bin/repo 这句命令会下载repo脚本文件到当前主目录的/bin目录下,并保存在文件repo中。 最后我们需要给repo文件可执行权限

CEGUI0.7.6源码配置编译详细过程

CEGUI 0.7.6 源码配置编译详细过程 (YangJing@南京20120314) 1.我的开发环境 操作系统:Vista Ultimate 32bit中文 编译环境:VS2010旗舰版中文 DXSDK: Microsoft DirectX SDK (June 2010) OGRE版本:1.7.4,直接用的二进制版本 2.下载CEGUI及依赖包源码 下载源码分为2部分,一部分是CEGUI本身的源码,另一部分是编译源码需要的依赖项dependencies。依赖项和源码版本有大致的对应关系,如CEGUI-DEPS-0.7.x-r3-vc10,表示该依赖项包适合于CEGUI 0.7.x(当然也适合于CEGUI0.7.6),vc10编译器,r3是依赖项资源包的版本。下载地址自己找吧。 下载后这个样子: 然后解压,源码解压后,是这个样子: 那个dependencies目录是加了依赖包后才出现的。依赖包解压后的样子: 把这里的dependencies目录拷贝到上面源码包内就可以了。注意相对位置别弄错了。 3.配置过程

目录下有个build_vs2008.bat文件,该文件运行后可以生成CEGUI.sln。还有其它版本的VS2003,VD2005,但是没有VS2010的。我的做法是来个VS2008,然后用VS2010打开,会有个自动升级的过程,就得到2010版的.sln了。 在cmd命令下,目录切换到premake目录,然后运行build_vs2008.bat,就得到CEGUI.sln了。这样,打开解决方案后,发现没有CEGUIOgreRenderer工程,而我要在OGRE应用中使用CEGUI(CEGUIOgreRenderer.lib和CEGUIOgreRenderer.dll),所以这样还不行。 打开build_vs2008.bat,看到: premake --file cegui.lua --target vs2008 说明用了cegui.lua。打开cegui.lua,看到: dofile("config.lua") 等等,莫非有什么配置项在config.lua内,打开config.lua 看到: 红色箭头这一项,本来是false,默认不生成CEGUIOgreRenderer工程,我该为true,然后再运行build_vs2008.bat,在新生成的CEGUI.sln中看到CEGUIOgreRenderer工程了。其它的Renderers也可以在这里找到。我又要了个CEGUIDirect3D10Renderer模块。 然后我就编译整个CEGUI解决方案。发现很多问题:

Ubuntu下Android源码修改、编译及运行、launcher定制

环境 Linux版本: Ubuntu 11.04(可由 10.10的版本进行升级)64位系统 GCC版本: gcc version 4.5.2 Java版本: java version " 1.6.0_26" 下载android源码前注意: 1、保证Ubuntu系统中的容量在80G左右,以保证足够的空间来存放android源码以及编译后的相关文件。 联网方法: 采用拨号进行连接。相关操作步骤如下所示: 1、虚拟机设置硬件网络适配器网络连接桥接 2、启动Ubuntu系统,打开终端(在普通用户下),输入相关命令如下: $ pppoeconf//打开后输入上网账号跟密码,确认保存 $ sudo pon dsl-provider//上网连接命令

经过这两个步骤后就可以进行上网了。 Android源码编译所依赖的tools 01.$ sudo apt-get update 02.$ sudo apt-get -y install git-core 03.$ sudo apt-get -y install gnupg 04.$ sudo apt-get -y install sun-java6-jdk flex 05.$ sudo apt-get -y install bison 06.$ sudo apt-get -y install gperf 07.$ sudo apt-get -y install libsdl-dev 08.$ sudo apt-get -y install libesd0-dev 09.$ sudo apt-get -y install libwxgtk 2.6-dev 10.$ sudo apt-get -y install build-essential 11.$ sudo apt-get -y install zip 12.$ sudo apt-get -y install curl 13.$ sudo apt-get -y install libncurses5-dev 14.$ sudo apt-get -y install zlib1g-dev 15.$ sudo apt-get -y install valgrind 注意: (如果是32bit的系统的话,则要更改几个Android.mk文件)01./external/clearsilver/cgi/Android.mk

Android 源码编译 流程

Android 源码编译调试流程 by mengke 1 编译流程 sudo apt-get install build-essential sudo apt-get install make sudo apt-get install gcc sudo apt-get install g++ sudo apt-get install libc6-dev sudo apt-get install patch sudo apt-get install texinfo sudo apt-get install libncurses-dev sudo apt-get install git-core gnupg sudo apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl sudo apt-get install ncurses-dev sudo apt-get install zlib1g-dev sudo apt-get install valgrind sudo apt-get install python2.5 安装java环境 sudo apt-get install sun-java6-jre sun-java6-plugin sun-java6-fonts sun-java6-jdk sudo apt-get install sun-java5-jdk (ubuntu 910 估计会有一些问题) (注:官方文档说如果用sun-java6-jdk可出问题,得要用sun-java5-jdk。经测试发现,如果仅仅make(make不包括make sdk),用sun-java6-jdk是没有问题的。而make sdk,就会有问题,严格来说是在make doc出问题,它需要的javadoc版本为1.5。 因此,我们安装完sun-java6-jdk后最好再安装sun-java5-jdk,或者只安装sun-java5-jdk。这里sun-java6-jdk和sun-java5-jdk都安装,并只修改javadoc.1.gz和javadoc。因为只有这两个是make sdk用到的。这样的话,除了javadoc工具是用1.5版本,其它均用1.6版本: sudo apt-get install sun-java5-jdk) cd /etc/alternatives sudo rm javadoc.1.gz sudo ln -s /usr/lib/jvm/java-1.5.0-sun/man/man1/javadoc.1.gz javadoc.1.gz sudo rm javadoc sudo ln -s /usr/lib/jvm/java-1.5.0-sun/bin/javadoc javadoc 假设源代码的目录为mydroid root@mk-desktop:~/mydroid# ls Makefile build development frameworks out sdk bionic cts device hardware packages system bootable dalvik external ndk prebuilt vendor

安卓系统源码编译

安卓源码编译 1、编译环境的搭建 操作系统推荐安装64位的ubuntu10.04,其他版本的ubuntu也可以安装,但是可能出现一些莫名其妙的Bug。 系统安装结束之后,还需要安装一些编译源码需要的工具和依赖包。具体内容如下:确认下列软件安装成功并且版本号正确: 1.1 gcc4.4,而不是gcc4.6,如果是4.6,需要安装gcc4.4,命令如下: sudo apt-get install gcc-4.4 sudo apt-get install g++-4.4 cd /usr/bin ls -l gcc* sudo mv gcc gcc.bak sudo ln -s gcc-4.4 gcc ls -l g++* sudo mv g++ g++.bak sudo ln -s g++-4.4 g++ gcc -v g++ -v 1.2 python 2.5-2.7,ubuntu10.04版本,默认的python版本是2.6。 1.3 JDK版本是1.6.0,而不是openJDK, 1.4 安装git sudo apt-get install git-core gnupg 1.5 一些依赖包的安装: Ubuntu系统版本不同,所需要安装的依赖包也不同,具体情况如下所述: u buntu 10.04(64位) $ 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 ubuntu 11.10(64位)

Android_SDK编译,带自己api的android.jar编译

Android SDK编译 ——如何将自己源代码加入android.jar 在Android源码编译成功的基础上重新编译带自己API的android.jar需要进行以下几步操作。 1 添加自己源代码,在Android源码frameworks/base目录下新建一个文件夹保存代码,如tv,以包的形式命名添加的文件所在的路径,如/tv/java/android/tv,添加的java文件开头定义的包即是编译成功的class文件所在的包。 2 修改makefile文件 2.1 修改build/core/pathmap.mk文件 在FRAMEWORKS_ BASE_ SUBDIRS变量后添加tv\,代码如下(makefile 文件中的语句以Tab键空格开头) FRAMEWORKS_BASE_SUBDIRS := \ $(addsuffix /java, \ core \ graphics \ location \ media \ opengl \ sax \ telephony \ wifi \ vpn \ keystore \ tv \ ) 2.2修改frameworks/base/Android.mk 文件 在packages_to_ document变量后添加自己源代码的包名称,如android/tv,结果如下(makefile文件中的语句以Tab键空格开头) packages_to_document := \ android \ javax/microedition/khronos android/tv 3 在ubuntu命令行终端使用如下命令进行编译: make clean make update-api make PRODUCT-sdk-sdk 最后一行也可以用如下两个命令代替: make –j4 make sdk 4 编译结果 4.1 android.jar文件所在的目录为 /out/target/common/obj/PACKAGING/android_jar_intermediates/android.jar 并在/out/target/common/obj/JA V A_LIBRARIES/android_stubs_current_interme diates/src目录下重新以package形式组织所有生成到android.jar中的源代码。 4.2 SDK所在目录为

编译原理(PL0编译程序源代码)

/*PL/0编译程序(C语言版) *编译和运行环境: *Visual C++6.0 *WinXP/7 *使用方法: *运行后输入PL/0源程序文件名 *回答是否将虚拟机代码写入文件 *回答是否将符号表写入文件 *执行成功会产生四个文件(词法分析结果.txt符号表.txt虚拟代码.txt源程序和地址.txt)*/ #include #include"pl0.h" #include"string" #define stacksize 500//解释执行时使用的栈 int main(){ bool nxtlev[symnum]; printf("请输入源程序文件名:"); scanf("%s",fname); fin=fopen(fname,"r");//以只读方式打开pl0源程序文件 cifa=fopen("词法分析结果.txt","w"); fa1=fopen("源程序和地址.txt","w");//输出源文件及各行对应的首地址 fprintf(fa1,"输入pl0源程序文件名:"); fprintf(fa1,"%s\n",fname); if(fin){ printf("是否将虚拟机代码写入文件?(Y/N)");//是否输出虚拟机代码 scanf("%s",fname); listswitch=(fname[0]=='y'||fname[0]=='Y'); printf("是否将符号表写入文件?(Y/N)");//是否输出符号表 scanf("%s",fname); tableswitch=(fname[0]=='y'||fname[0]=='Y'); init();//初始化 err=0; cc=cx=ll=0; ch=' '; if(-1!=getsym()){ fa=fopen("虚拟代码.txt","w"); fas=fopen("符号表.txt","w"); addset(nxtlev,declbegsys,statbegsys,symnum); nxtlev[period]=true; if(-1==block(0,0,nxtlev)){//调用编译程序 fclose(fa); fclose(fa1); fclose(fas); fclose(fin); return 0; }

如何单独编译Android源代码中的模块

如何单独编译Android源代码中的模块第一次下载好Android源代码工程后,我们通常是在Android源代码工程目录下执行make命令,经过漫长的等待之后,就可以得到Android系统镜像system.img了。以后如果我们修改了Android 源代码中的某个模块或者在Android源代码工程新增一个自己的模块,是不是还是执行make命令呢?答案是否定的,Google为我们准备了另外的命令来支持编译单独的模块,以及重新打包system.img 的命令。在继续学习Android源代码之前,就让我们先来看看这个命令吧。 一. 首先在Android源代码目录下的build目录下,有个脚本文件envsetup.sh,执行这个脚本文件后,就可以获得一些有用的工具: USER-NAME@MACHINE-NAME:~/Android$ . ./build/envsetup.sh 注意,这是一个source命令,执行之后,就会有一些额外的命令可以使用: - croot: Changes directory to the top of the tree. - m: Makes from the top of the tree. - mm: Builds all of the modules in the current directory. - mmm: Builds all of the modules in the supplied directories. - cgrep: Greps on all local C/C++ files. - jgrep: Greps on all local Java files. - resgrep: Greps on all local res/*.xml files. - godir: Go to the directory containing a file. 这些命令的具体用法,可以在命令的后面加-help来查看,这里我们只关注mmm命令,也就是可以用它来编译指定目录的所有模块,通常这个目录只包含一个模块。 二. 使用mmm命令来编译指定的模块,例如Email应用程序: USER-NAME@MACHINE-NAME:~/Android$ mmm packages/apps/Email/ 编译完成之后,就可以在out/target/product/generic/system/app目录下看到 Email.apk文件了。Android系统自带的App都放在这具目录下。另外,Android系统的一些可执行文件,例如C编译的可执行文件,放在out/target/product/generic/system/bin目录下,动态链接库文件放在out/target/product/generic/system/lib目录下, out/target/product/generic/system/lib/hw目录存放的是硬件抽象层(HAL)接口文件,后面的文章里面,我们会陆续提及到,敬请关注。 三. 编译好模块后,还要重新打包一下system.img文件,这样我们把system.img运行在模拟器上时,就可以看到我们的程序了。 USER-NAME@MACHINE-NAME:~/Android$ make snod 四. 参照Ubuntu上下载、编译和安装Android最新源代码一文介绍的方法运行模拟器: USER-NAME@MACHINE-NAME:~/Android$ emulator 这样一切就搞定了。

Ubuntu下QT源码编译详细过程

10 .QT 10.1 qt的源码编译 安装编译源码的所需工具和库 X11: 1. apt-get install libX11-dev libXext-dev libXtst-dev 2. apt-get install xorg-dev 3. apt-get install libtool 4. apt-get install autoconf 5. apt-get install g++ ARM: 1 apt-get install qt3-dev-tools apt-get install qt4-qmake 2 安装触屏支持库tslib-1.4 tar -zxvf tslib-1.4.tar.gz cd tslib进入tslib目录下,目录内容如图10-1所示: 图10-1 tslib ./autogen.sh 该shell脚本的正确的执行过程如图10-2所示:

图10-2 autogen.sh执行过程 设置环境变量 CC=arm-linux-gcc 讲ac_cv_func_malloc_0_nonnull=yes重定向输入到arm-linux.cache echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache 执行configure文件 ./configure --prefix=/opt/ts/ --host=arm-linux --cache-file=arm-linux.cache 执行make编译 make 执行make install安装 make install 检验是否安装成功,在/opt/ts/下面存在的四个文件夹,则安装成功,如图10-3所示: 图10-3 ts安装目录 X11版本编译安装过程: 第一步:解压 工程路径:/home/lizhangjie/install 目标文件:qt-everywhere-opensource-src-4.6.3.tar.gz 通过tar命令将目标文件解压到工程路径下: tar –zxvf qt-everywhere-opensource-src-4.6.3.tar.gz 注意:tar.bz2结尾的压缩文件才会用到-jxvf 参数。 解压之后会得到文件夹qt-everywhere-opensource-src-4.6.3,编译该源码得到的最终是X11版本的,我们后面还要编译ARM版本。 第二步:执行configure文件 我们首先的通过执行configure文件,让系统按照configure文件生成各级Makefile。cd qt-everywhere-opensource-src-4.6.3,qt-everywhere-opensource-src-4.6.3文件夹下的内容,如图10-3所示:

android源码的下载和编译方法

Android4.0源码下载编译方法 第一步:初始化编译环境 To build the Android source files, you will need to use Linux or Mac OS. Building under Windows is not currently supported 大概意思就是指要编译Android源代码文件,你需要使用Linux或者Mac OS系统,在Windows 下编译当前不是被支持的,所以,得安个Linux,我目前用的是装在虚拟机的Ubuntu,当然其它的也可以的。 强烈建议: 虚拟机的RAM>=4G, DISK >= 40G 1.安装虚拟机, 我从360上边下载了VMwareworkstation8.0.4版本; 2.安装ubuntu系统, 使用了ubuntu11.04, 现在最新的版本是ubuntu 11.10, 这里我推荐使 用11.04版本, 原因后边有讲到; 在home界面选中”Create a New Virtual Machine” 选择”Typical”, 然后”next”

选中”Installer disc image file(iso):”, 在Browser中选中需要安装的镜像文件.

然后”next”, “next”, 修改Maximum disk size(GB) 40, 选中”Store virtual disk as a single file”;

然后”next”, 在如下界面点击完成(注意这里的Memory是1G, 4G的内存要求,我们可以通过增加SWAP空间来解决, 文档最后又说明)

Linux下源码编译安装详解

前言 源码要运行,必须先转成二进制的机器码。这是编译器的任务。比如,下面这段源码(假定文件名叫做test.c)。 #include int main(void) { fputs("Hello, world!\n", stdout); return 0; } 要先用编译器处理一下,才能运行。 $ gcc test.c $ ./a.out Hello, world! 对于复杂的项目,编译过程还必须分成三步。 $ ./configure $ make $ make install 编译过程流程图:

一.编译的具体过程 1. 配置(configure) 编译器在开始工作之前,需要知道当前的系统环境,比如标准库在哪里、软件的安装位置在哪里、需要 装哪些组件等等。这是因为不同计算机的系统环境不一样,通过指定编译参数,编译器就可以灵活适应环境,编译出各种环境都能运行的机器码。这个确定编译参数的步骤,就叫做"配置"(configure)。 这些配置信息保存在一个配置文件之中,约定俗成是一个叫做configure的脚本文件。通常它是由autocon 工具生成的。编译器通过运行这个脚本,获知编译参数。 configure脚本已经尽量考虑到不同系统的差异,并且对各种编译参数给出了默认值。如果用户的系统环 比较特别,或者有一些特定的需求,就需要手动向configure脚本提供编译参数。 $ ./configure --prefix=/www --with-mysql 上面代码是php源码的一种编译配置,用户指定安装后的文件保存在www目录,并且编译时加入mysq 模块的支持。 2. 确定标准库和头文件的位置 源码肯定会用到标准库函数(standard library)和头文件(header)。它们可以存放在系统的任意目录中,编译器实际上没办法自动检测它们的位置,只有通过配置文件才能知道。 编译的第二步,就是从配置文件中知道标准库和头文件的位置。一般来说,配置文件会给出一个清单,列出几个具体的目录。等到编译时,编译器就按顺序到这几个目录中,寻找目标。 对于大型项目来说,源码文件之间往往存在依赖关系,编译器需要确定编译的先后顺序。假定A文件依赖于B文件,编译器应该保证做到下面两点。 (1)只有在B文件编译完成后,才开始编译A文件。 (2)当B文件发生变化时,A文件会被重新编译。 编译顺序保存在一个叫做makefile的文件中,里面列出哪个文件先编译,哪个文件后编译。而makefile文件由configure脚本运行生成,这就是为什么编译时configure必须首先运行的原因。 在确定依赖关系的同时,编译器也确定了,编译时会用到哪些头文件。 不同的源码文件,可能引用同一个头文件(比如stdio.h)。编译的时候,头文件也必须一起编译。为了节省时间,编译器会在编译源码之前,先编译头文件。这保证了头文件只需编译一次,不必每次用到的时候,都重新编译了。 不过,并不是头文件的所有内容,都会被预编译。用来声明宏的#define命令,就不会被预编译。

Linux如何编译安装源码包软件

一、什么是源码包软件; 顾名思义,源码包就是源代码的可见的软件包,基于Linux和BSD系统的软件最常见;在国内源可见的软件几乎绝迹;大多开源软件都是国外出品;在国内较为出名的开源软件有fcitx;lumaqq;Lumaqq及scim等; 但软件的源代码可见并不等于软件是开源的,我们还要以软件的许可为准;比如有些软件是源码可见的,但他约定用户只能按他约定的内容来修改;比如vbb论坛程序;所以一个软件是否是开源软件,得具备两个条件;一是源代码可见;二是要有宽松的许可证书,比如GPL 证书等; 在GNU Linux或BSD社区中,开发人员在放出软件的二进制软件包的同时,也会为我们提供源代码软件包; 二、源代码有何用? 一个软件的如果有源码,是任何人都能看到他是怎么开发而来的,就像一个瓶子,比如瓶子制作的模具是什么;需要什么材料;具体的用途以及瓶子的详细说明书等等。软件的开放源码就是类似,开发者在给我们软件的同时,也会告诉我们软件是怎么开发出来的;只要我们的水平足够的高,所有的代码都在那里,我们就可以修改和定制软件,以适合我们的需要;如果Windows开放源代码,并以GPL发布,一样是有人能造出来N多的Windows发行版;遗憾的是Windows并不是开源系统; 所以软件的源代码的用处无非是以下两点; 1、软件根据用户的需要加以定制; 2、二次开发;注:要根据软件的许可证书约定为准,开发者许可二次开发才行; 三、怎样安装以源码包打包的软件; 1、源码包的打包格式; 源代码一般以file.tar.gz file.tar.bz2或file.src.rpm 打包;file.tar.gz和 file.tar.bz2格式的解包命令如下; [root@localhostbeinan]# tarjxvf file.tar.bz2 [root@localhostbeinan]# tar zxvf file.tar.gz

相关主题
相关文档
最新文档