免费注册 查看新帖 |

Chinaunix

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

arm-elf-strip和-elf2flt的比较 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-15 09:40 |只看该作者 |倒序浏览
由于uclinux不支持fork,而是用vfork来代替,所以写了个测试程序。
2种方式编译
1 arm-elf-gcc -elf2flt -o fork fork.c。
2 arm-elf-gcc -o fork fork.c。
经-elf2flt的fork文件大小,要比不加-elf2flt生成elf文件后,arm-elf-strip后文件小很多。
arm-elf-strip和-elf2flt的区别在哪里?
程序如下:
#include
#include
int main()
{
        pid_t pid;
        pid = fork();
        if (pid < 0)
        {
                printf("fork failed\n");
                exit(-1);
        }
        else if (0 == pid)
        {
                sleep(2);
                printf("Child process, my pid : %d\n", getpid());
                exit(0);
        }
        else
        {
                printf("father process, my pid : %d\n", getpid());
                exit(0);
        }
}
~
~
~
你怎么会突然间问起这种奇怪的问题?
arm-elf-strip:是把elf文件中的一些没有用的信息删除掉,起到节省文件空间的作用。strip之后的elf文件是没有办法再elf2flt的。
-elf2flt:是把没有strip的elf文件转换成flt格式的文件,拿这两个比较没有任何意义!
老兄你们借我的板子还不快点评估做项目啊?还在研究这些问题。
呵呵,OK。
只是由于我们的应用很大,所以才考虑的.它们的文件格式不一样。
和另一块芯片的带内管理已经OK了。
以前移植过net-snmp到arm9上。
现在uclinux移植net-snmp,由于fork/vfork的问题,卡住了。已经#define fork vfork了。但是影响了原来进程的控制逻辑。
斑竹有在uclinux移植net-snmp的资料吗?
如果你觉得fork改为vfork也有问题的话,那么就修改成pthread的形式就ok了,我没于这个资料,你自己研究下!
net-snmp文档不多,加我msn:againyuan@hotmail.com
我先贴一些能保证在linux2.6上运行的,大家分享。
net-snmp全新安装:
1.将.c  .h 放到net-snmpXXX/agent/mibgroup目录下
2.运行./configure --host=arm-linux  --target=arm  --with-cc=arm-linux-gcc
--with-ar=arm-linux-ar  --prefix=/usr/net-snmp  --with-endianness=little
--enable-mini-agent --with-mib-modules=mitsubishi
3.修改net-snmp-5.3.1/include/net-snmp目录下的net-snmp-config.h
  将PERSISTENT_DIRECTORY 修改为/syscfg/net-snmp
  将SNMPSHAREPATH 修改为/syscfg/
  将SYSTEM_MIB修改为 1, 3, 6, 1, 4, 1, 201, 2, 17, 1,这个根据你的MIB定义
4.运行make LDFLAGS="-elf2flt -static"
5 cd agent
6 .arm-linux-strip snmpd
7 .将snmpd 放到/usr/sbin
8 .将snmpd.conf 放到自己指定的目录/syscfg/share/snmp  (注意修改snmpd.conf的相关配置,否则agent可能访问不到)
9 .将libm-2.3.2.so放到/lib/libm.so.6
移植到 uclinux修改
./configure --host=arm-linux  --target=arm  --with-cc='arm-elf-gcc '
--with-ar=arm-elf-ar  --prefix=/usr/net-snmp  --disable-shared  --with-endianness=little
--enable-mini-agent --with-mib-modules=mitsubishi
一定加上这个--disable-shared ,uclinux不支持动态库
呵呵,对,希望大家都支持
arm7里我最喜欢的是745了,性价比最高。
我的net-snmp移植成功了。
就是按照上面的帖子,但要在net-snmp-config.h中加入:
#define fork vfork
当然还有很多细节的问题只能自己摸索了
               
               
               

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP