注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

嵌入式开发实战4——内核的编译之一基本的编译  

2012-05-29 23:37:28|  分类: ARM开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
 

嵌入式开发实战4——内核的编译之一基本的编译

配合一下UBOOT后的内核编译,同步进行会更快一些,今天配置好环境,这个FD8就是不如FD9好使,盲目的升级各种版本的结果是产生一系列的不可知的错误。

将全新的原始内核linux2.6.32.2拷贝到FD8中(又回到原来的了,没办法,公司没有更高版本的,只有这个装好的),解压缩,打顶层的目录中的Makefile,修改如下:

export KBUILD_BUILDHOST := $(SUBARCH)

ARCH    ?= $(SUBARCH)

CROSS_COMPILE ?= 

改为

export KBUILD_BUILDHOST := $(SUBARCH)

ARCH    ?= arm

CROSS_COMPILE ?= arm-linux-

当然看到这里,你一定得明白你得把交叉编译器配置好了,这个我们说过多少次了,不再重复。

然后:

     Make s3c2410_defconfig(在:\arch\arm\configs下,是SMDK2440的默认配置文件)

          Make

这两条命令执行后,报出了下面的错误:

/opt/FriendlyARM/toolschain/4.4.3/libexec/gcc/arm-none-linux-gnueabi/4.4.3/cc1: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /opt/FriendlyARM/toolschain/4.4.3/lib/libppl_c.so.2)

 

/opt/FriendlyARM/toolschain/4.4.3/libexec/gcc/arm-none-linux-gnueabi/4.4.3/cc1: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /opt/FriendlyARM/toolschain/4.4.3/lib/libppl.so.7)

make[1]: *** [kernel/bounds.s] 错误 1

make: *** [prepare0] 错误

不用想,肯定是版本有问题,于是在网上搜索了一下,果然是FD8中的libstdc++.so.6这个链接所对应的库libstdc++.so.6.0.8太低,应该是libstdc++.so.6.0.10这个版本太低,查了一下:

strings /tmp/libstdc++.so.6|grep GLIBC

 

GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBC_2.0
GLIBC_2.3
GLIBC_2.4
GLIBC_2.3.4
GLIBC_2.1
GLIBC_2.1.3
GLIBC_2.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH

果然没有需要的GLIBCXX_3.4.9,这里要说明一下,如果在这查明有的话,就不是这个问题了,大家要小心,这个库一旦出问题,可就无法进入窗体界面了。谨慎。

执行ls -l  /usr/lib/libstdc++.so.6
发现/usr/lib/libstdc++.so.6 -> /usr/lib/libstdc++.so.6.0.8,其实这里需要使用libstdc++.so.6.0.10
从网上下载这个文件,然后把/usr/lib/libstdc++.so.6 -> /usr/lib/libstdc++.so.6.0.8(rm -rf /usr/lib/libstdc++.so.6 )软链接删除,重新做
ln -s /usr/lib/libstdc++.so.6.0.10  /usr/lib/libstdc++.so.6

具体的过程如下:

1 删除 符号链接:rm /usr/lib/libstdc++.so.6

2复制文件cp /tmp/libstdc++.so.6.0.10 /usr/lib/

 3再建立符号链接ln -s /usr/lib/libstdc++.so.6.0.10 /usr/lib/libstdc++.so.6

一定要注意,这里,下了这个库后,编译发现这个问题:

“arm-none-linux-gnueabi-gcc: internal error: bus error(program cc1)please submit a full bug report”

网上有的说重新再装一次交叉编译器就好了,有的说要装一个什么软件,结果测试后发现,仍然是上面库的问题,下来的这个库太小只有39K,而实际其应该有929K,小心啊。

 

重新下载正确的库,再make clean,再make,OK,经过半个小时左右的等待,成功编译完成。

就这么一个简单的东西,费这么大劲,不容易。

纸上学来终觉浅,决知此事要躬行。

  评论这张
 
阅读(603)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017