Chinaunix首页 | 论坛 | 博客
  • 博客访问: 532662
  • 博文数量: 237
  • 博客积分: 2175
  • 博客等级: 大尉
  • 技术积分: 2563
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-05 22:02
个人简介

目前在一家公司担任软件总监,主要涉及智能手机,笔记本电脑的开发

文章分类

全部博文(237)

文章存档

2024年(18)

2023年(68)

2022年(13)

2021年(7)

2020年(11)

2019年(3)

2018年(10)

2017年(8)

2012年(7)

2011年(4)

2010年(32)

2009年(41)

2008年(6)

2007年(9)

分类: LINUX

2010-02-04 17:40:23

 
Poky可以看着是OE的简化版本(OE中有1969项,支持opie,gpe等,而poky只有333项)这样的好处是如果缺少什么package ,可以到OE那里去找,然后放到poky中来。
poky用的是bitbake,一般来说bitbake 不会有什么错误。所以当遇到问题的时候,常见的是meta/package的错误,主要有找不到source,此时修改.bb文件的SRC_UI .
{BANNED}最佳近我使用了poky 3.2来做项目,HOST环境为 ubuntu 9.04  gcc 4.3

1 编译poky的{BANNED}最佳小系统
  poky用法很简单,
source poky-init-build-env
bitbake poky-image-minimal  
 这样就编译出{BANNED}最佳小系统了,包括busybox ,启动脚本等

2 编译sato
 bitbake poky-image-sato

问题1 找不到fontcacheproto
wget -c

问题2 找不到libpcap
wget -c

问题3 libidn-0.5.19-r0: do_configure出错
原来是 libidn-0.5.19.bb
       autoreconf -f -i -s
这句话执行不了,没有权限
solution :
直接到tmp/work/.../libidn-0.5.19/下面执行
sudo autoreconf -f -i -s
然后
sudo chown -R lawrencekang:lawrencekang ./libidn-0.5.19
重新执行
bitbake poky-image-sato


问题4 webkit编译不过
     发现preprocessor 用的是/usb/bin/gcc, 而我把gcc设置成gcc_3.4了
    重新把gcc设置成gcc_4.3

然后  进入到 ./build/tmp/deploy/images/目录,此时
 bzImage-qemux86.bin poky-image-sato-qemux86.ext3 都已经生成了

3 poky qt 支持
   poky用的是GTK ,如果要支持qt的话,参考下面的地址:
  

4 poky支持的cpu有哪些,用的gcc 版本是多少?
  x86和arm , 对于poky 3.2 ,缺省的gcc 版本是 4.3.3

5 怎么用external tools ?
在local.conf中有一个变量 POKYMODE
比如设置为:
POKYMODE= external-csl2006q3
这将关联到文件 meta/conf/distro/include/poky-external-csl2006q3.inc
在这个文件里定义了 extern toolchain 的路径以及编译选项
EXTERNAL_TOOLCHAIN = "/usr/local/csl/arm-2006q3"
此时外部编译器为arm-2006q3,放在/usr/local/csl/arm-2006q3,
在poky-external-csl2006q3.inc中,定义了
PREFERRED_VERSION_external-csl-toolchain = "2006q3-27"
我们在meta/packages/meta/external-csl-toolchain_2006q3-27.bb 中可以看到,它主要是把一些libc库放在 staging目录下 ,以共享

6 怎么添加一个machine ?
   在poky里,已经支持了一些cpu 比如imx31,如果有一个新的芯片要支持,加入芯片名称为 newchip ,项目名称为newproject
1) 在local.conf里加上一个 MACHINE = newchip
2) 可以用BB_NUMBER_THREADS等来加速编译,但注意前面不要有空格,否则出现
   unparsed line: ' BB_NUMBER_THREADS = "4"'
3) add meta/conf/machine/newchip.conf
   在里面定义好 armv5te等
  定义相应的内核kernel 以及 boot loader
  PREFERRED_PROVIDER_virtual/kernel = "linux-newchip"
   EXTRA_IMAGEDEPENDS += "uboot-newchip virtual/kernel "
 具体可参考其他的machine conf
4) 在 linux 里面加上对应的kernel 的 bb文件
  在meta/package/linux下面加上  linux-newchip_2.6.28.bb
 注意 linux-newchip 和 2.6.28 之间是下划线,之前我用了- ,结果出现
 NOTE: consider defining PREFERRED_PROVIDER_virtual/kernel
 然后我改成 PREFERRED_PROVIDER_virtual/kernel = "linux-newchip-2.6.28"
又出现
'[]' RDEPENDS/RECOMMENDED or otherwise requires the runtime entity 'virtual/arm-none-linux-gnueabi-depmod-1.0' but it wasn't found in any PACKAGE or RPROVIDES variables

5) 在uboot里面加上对应的uboot的 bb 文件 
  在uboot里面加上uboot-newchip_4.5.1.bb,但发现它找到了uboot里面其他的bb编译
 在meta/conf/machine/newchip.conf文件里加上:
 PREFERRED_PROVIDER_uboot = "uboot-newchip_4.5.1.bb"
 
6) 在meta/files里面加上device_table-newchip.txt
  并在newchip.conf里写上  IMAGE_DEVICE_TABLES = "files/device_table-newchip.txt"

7) 在meta/packages/images 下加上 newproject-image-minimal.bb 和newproject-image-full.bb

8) udev怎么总是编译失败 ?
  发现将 meta/conf/distro/include/poky-fixed-revisions.inc 的  PREFERRED_VERSION_udev ?= "141"
  改为 124  就可以了 。
 为什么老的版本可以,而新的版本不可以呢? 我猜想也许是编译器太老了?
 于是将arm2006q3 改为arm2008q3 ,发现 用 arm2008q3就可以了。
 原因是glibc在 arm2006q3里面太老了   有些函数没有

9) 把qtopia 4.2.1也加入到poky中
   由于用了gcc 4.3编译器,所以需要修改qtopia 4.2.1的代码,具体怎么修改参见我的另外一篇blog: buildroot编译环境
  由于我的项目中qtopia 需要用到另外我的一个库 libABC ,而libABC编译好了,放在staging/armv5te-none-linux-gnueabi/usr/lib下面
   怎么让ld选项加上 staging/armv5te-none-linux-gnueabi/usr/lib ?
 没想到办法,{BANNED}最佳后在qtopia的device里面的configure文件里 ,加上 -Lxxx/staging/armv5te-none-linux-gnueabi/usr/lib 才解决问题

7 还剩下一个问题没有解决,就是怎么在poky编译的时候进行输入,比如
  我要执行一个命令,需要用到sudo , 那么sudo会提示用户输入密码,不知道用poky怎么输入输出

 
阅读(7227) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~