LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 840|回复: 1

关于交叉编译的若干问题,向大家请教。

[复制链接]
发表于 2007-3-26 16:20:41 | 显示全部楼层 |阅读模式
1,在利用arm-elf-tools编译uClinux时,
它编译的应用程序是否都是静态链接的?(我看在生成的rootfs中没有任何库文件)。
那么可否动态链接?

2, arm-elf-tools 安装后 /usr/local/arm-elf/lib中的libc.a
等库是否就是编译uClibc得到的库?用arm-elf-tools编译应
用程序是否就会链接这些库? 如果是动态链接的,下载到目
标板后怎么能运行呢?  arm-elf-tools编译时加了elf2flt参数,
对flt格式的文件,有没readelf objdump ldd这样的工具? 怎么查看flt格式文件的信息?

3, 顶值帖子 “学习使用SkyEye仿真”里编译hello.c时: a
rm-elf-gcc -Wl,-elf2flt -o hello hello.c
我如果加了-Wl参数,编译出来的是hello.gdb,
是一个elf文件,如果去掉-Wl参数,生成的是flt的文件。
在这里,hello.c中的printf()函数是静态链接的吗?
否则怎么能在没有动态链接库的romfs中运行。
为什么在这里-Bstatic参数没有作用?
还有在这里链接时没有指定程序的链接地址,那么arm-elf-tools
默认怎么做的?uClinux下运行时,怎么确定它在哪运行。


4,假如我在编译uClinux后,不想使用它生成的romfs,
自己怎么单独建立romfs? 是否就是把相应的程序源码
拿来用arm-elf-tools编译,再制作rootfs并生成romfs?
用arm-elf-tools编译这些应用程序是否要先编译uClibc(假如我要用uClibc)?
还是直接使用arm-elf-tools自带的库就行了?

5,我在使用uClinux-dist-20040408等老点的版本时,
默认的编译工具是arm-elf-gcc ,而在使用uClinux-dist-20060803
这样的交新版本时,它默认用arm-linux-gcc编译的,
是否现在uClinux已经可以用arm-linux-tools来编译了?


6,一般来说,bootloader中不能使用glibc库,但vivi使用了,
它是静态链接的,但它链接出来的elf文件只有100多K,
再生成bin文件就更小了,我使用的ARM CPU 官方提供了
一个简单的 bootloader来引导uClinux,也使用了glibc中的函数,
比如memcpy。原本是在ADS中编译的,编译出来没有问题,
只有20多KB,但我把它修改了用arm-linux-tools来编译,
如果静态链接glibc库,竟然有1.4MB之巨,这是怎么回事?
我的编译参数是参考vivi的。

以上问题基本上都是关于编译工具,还有库的问题,
感觉对它们的关系不是很清晰,请大家给我讲讲。
发表于 2007-5-6 20:50:47 | 显示全部楼层
我也碰到了同样的问题
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表