ArchLinux 编译Anroid5 lollipop 错误解决

错误1,python工具出错

错误情况如下:

============================================
File "build/tools/findleaves.py", line 95
    print r
        ^
SyntaxError: Missing parentheses in call to 'print'
File "build/tools/findleaves.py", line 95
    print r
        ^
SyntaxError: Missing parentheses in call to 'print'
File "build/tools/diff_package_overlays.py", line 88
    print r
        ^
SyntaxError: Missing parentheses in call to …
more ...

小众又新颖的GUI

小众的新GUI框架记录

  1. ugfx, C语言 STM32等MCU可使用的嵌入式GUI,商业级但免费无任何版权限制,可为创客,商业等任何用途。且包含一个The µGFX-Studio GUI构建程序可用。

网址: http://ugfx.io/ 下载连接 https://community.ugfx.io/index.php?/files/

  1. ilixi 基于DFB的C++嵌入式Linux平台GUI,完全开源 http://www.ilixi.org/

基于DirectFB,libsigc++等平台组件构建,看官网有个行车电脑的ui demo,API粗看了下跟WxWidget比较接近,从类列表看,3D等支持都是有的。支持buildroot构建工具,支持yocto,挺不错,值得尝试。

  1. libui, C语言的桌面跨平台,本地UI风格的库,居然拥有10多种语言的binding了。https://github.com/andlabs …
more ...

安卓内核编译错误 kernel/timeconst.h defined(@val)

错误情况

今天编译安卓内核出现错误,

$ ./mk -k
#
# configuration written to .config
#
scripts/kconfig/conf --silentoldconfig Kconfig
  CHK     include/linux/version.h
  CHK     include/generated/utsrelease.h
make[1]: 'include/generated/mach-types.h' is up to date.
  CALL    scripts/checksyscalls.sh
  CHK     include/generated/compile.h
  TIMEC   kernel/timeconst.h
Can't use 'defined …
more ...

mips嵌入式linux系统构建过程

mips平台的嵌入式linux构建,比较简明的步骤,包括nanoRC的使用,根文件系统的制作,不包括mips工具链的制作。

 1. mips交叉编译环境搭建

编译环境需要选择mips-2007-01-21,从 "这里":ftp://ftp.denx.de/pub/eldk下载光盘iso,然后解压提取出整个环境,然后安装就可以了,安装指令:

install -d /your/toochain/path

然后设置path环境变量.

export PATH=/your/toochain/path/usr/bin:${PATH}
对于gentoo 系统,可以

     $ cat > /etc/env.d/50mipstoolchain << "EOF"
       PATH="/media/workspace/tools/eldk-mips-x.x/usr/bin …
more ...

[原创]OpenEmbedded 中文手册

8.11 打包:定义包类及其内容

一个bitbake"配方"就是一组创建一个或者多个在目标设备上安装的包的命令集合.典型的包就是

.ipkg或者.deb包(尽管bitbake本身并没有跟任何特殊的包格式相关联).

默认情况下会自动生成一些包,这些包并没有包含任何"配方"作者要求的特定动作.上面的helloworld

例子的包输出信息就说明了这些:

[NOTE: package helloworld-0.1-r0: task do_package_write: started

NOTE: Not creating empty archive for helloworld-dbg-0.1-r0

Packaged contents of helloworld into /home/lenehan/devel/oe/build/titan-glibc-25/tmp/deploy/ipk/sh4/helloworld_0.1-r0_sh4.ipk …

more ...

[原创]OpenEmbedded 中文手册-第一部分

声   明:

本文章为openembedded英文手册的中文翻译版。手册版权归OE所有。本文档只供技术和学习交流之用,不得用于商业用途,使用本文档如造成损失,译者一概不负任何责任。

转载请注明出处和作者!

作者: dangbinghoo@gmail.com

特此声明!

更新日志:
2008年12月03日 改正笔误
2008年12月21日 更新到8.11


2010年07月28日 更新到8.12

第一章 .简介
本章内容
*预览
*历史回顾
1.1 预览
oe bitbake像所有的build工具一样(比如make,ant,jam)控制如何去构建系统并且解决构建依赖,但是
不像那些功能单一的工程管理工具(比如make),bitbake不是基于把依赖写死了的makefile,而是
收集和管理大量之间没有依赖关系的描述文件(这里我们称为包的配方),然后自动按照正确的顺序进行
构建。(包的配方下文除非特殊说明都将简称为“配方”;oe都代表OpenEmbedded)
更确切的说 …
more ...

--host --build --target到底什么意思?

老是在做交叉编译,其实有时候对这三个东西的理解并不是那么清楚

从交叉工具链的情况来看,可以总结如下

--build= 谁在这里编译? 意思说你目前的编译动作在哪里跑的 ? 如果是编译一个arm工具链,虽然工具链为为arm弄的,但是构建工具链的时候是在主机上进行的。所以 --build=i686-pc-linux-gnu

--host= 目前编译出来的程序在哪里跑 ? 所以工具链好了之后,给目标系统编译程序全部是设置host为arm的。

--target=为谁编译程序,这在交叉编译的时候跟host一个意思,一般是guess的,而且configure 脚本会说是 =--host.

通常我们编译复杂的情况就是交叉编译了,据说还有一种很复杂的情况,三个平台:

比较,我现在在 i686机器上,想编译一个在 ppc上运行的交叉工具链,然后这个交叉工具链为arm生产程序,这个就算比较复杂了。

应该是binutils,gcc,libc的时候这个三个--要很谨慎的设置了。

可能是

  • --build=i686-pc-linux-gnu
  • --host=ppc-xxx
  • --target=arm-xxx

没有实验过,可以改天实验下,学习下。

续:三平台交叉编译实验

对binutils源码解压 …

more ...

关于工具链的编译uclibc/gcc

使用之前弄的脚本编译工具链其实还是比较轻松的,脚本也是比较稳定的,不过重点在于配置上,包括target名称的选择,uclibc的配置

一直困扰的nfs挂载不正常的问题最终发现还是uclibc配置不对,另外,对于thread的支持,一般需要使用nptl,然后如果要用gdb的话,gdbserver的编译必须要在uclibc里面启用thread debug,要不然会缺少东西:

#error No uintptr_t available; your C library is too old.

接着还会说thread_db.h 造成的某结构体的成员th不存在。

新的uclibc 0.9.32编译时需要链接libgcc_eh库文件,这个库文件在static阶段是不编译的,如果要让编译,需要硬性打patch实现。

这里贴一个正确的uclibc配置

#
# Automatically generated make config: don't edit
# Version: 0.9.32
# Wed Nov 23 14:53:07 …
more ...