免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2433 | 回复: 0
打印 上一主题 下一主题

flnx - cross compile for arm [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-19 21:53 |只看该作者 |倒序浏览


前,前一篇
已經做到好像OK(碰到recognizeable insn error )。因為cross compile libwww 好像
OK
。所以現在拿flnx-0.17再來試試。
有 關cross compile flnx, INSTALL file section b 有特別說明cross compile的procedure,重點就是在設定compile tool 變數,為了方便,可以先寫出下面的shell script(setcrosstool.sh) :
export AR=arm-elf-ar
export AS=arm-elf-as
export CC=arm-elf-gcc
export CXX=arm-elf-c++
export GXX=arm-elf-g++
export LD=arm-elf-ld
export NM=arm-elf-nm
export RANLIB=arm-elf-ranlib
export STRIP=arm-elf-strip先run 這一個script :
$ source setcrosstool.sh再run configure,因為使用uClibc,沒有支援STL,STL使用STLport-4.5.3。要將STLport的include path加到CXXFLAGS中。 這個動作沒辦法在config時指定,所以要部份作:
confugre --- 修改makeinclude --- makeconfigure時可以 指定的是microwin 的src path(with-microwin)和安裝的path(prefix).
./configure --with-microwin=/home/charles/magsi/armutils_2.5.91.0/build_arm/microwin/src --prefix=/home/charles/sigma/libflnx --host=i686-pc-linux-gnu會產生makeinclude。
接著修改makeinclude: 在CXXFLAG中加入以下option
-Dlinux  : 修正
-I/home/charles/magsi/armutils_2.5.91.0/build_arm/STLport-4.5.3/include : 修正"cannot find iostream.h"
-I/home/charles/magsi/armutils_2.5.91.0/build_arm/STLport-4.5.3/stlport : 修正 "cannot find stdlib.h"在LDLIBS和GLIBS都 加入以下options-L/home/charles/sigma/libjpeg6b/lib :修正"cannot find -ljpeg"就可以開始make.
最先出現問題應該都是"unrecognizeable insn"問題,從error message中找到問題的function,找function的local variable中有沒有宣告size過大的array,把size改小。
接著會出現link 時發生resolved external : rint.
這是因為uClibc 的libm沒有加入s_rint.c這個module,修改uClibc/libm/Makefile,把s_rint.c加入source list中,rebuild uClibc.
還會發生一次"unrecognized insn" error,這次是new太多變數,因為test program,所以直接刪掉那些太多的button就可以。
flnx build OK!!
如果要測試test下的program,還要修改下test/Makefile,在 "cxx: " 的rule加上 -Wl,-elf2flt="-s32768" ,才會strip down成uClinux的flt 執行檔格式。
test program時,要記得先啟動nano-X
還沒install ---$ make install
strip: Unable to recognise the format of  the input file fluid查一下fluid/Makefile,這是因為install 使用x86的strip tool :strip,要修改為cross 的: arm-elf-strip.
OK.
但是還是不行,應該是要改 link command,加入elf2flt,轉換成flat binary file。
修改fluid/Makefile,在$(PROGRAM) : $(OBJ) 的build rule加上 -Wl,-elf2flt="-s32768"刪掉install :的rule中刪掉strip 這個command。
fluid,重新make。make install。(會有error,因為include和lib都已經有了,所以error是應該的)。
make install 後,會在install folder(這個例子是libflnx)下有bin, include, lib三個folder。
bin內是一個demo program。可以執行(好像是一個editor..)。

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/98913/showart_2000708.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP