免费注册 查看新帖 |

Chinaunix

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

[操作系统] 求助:交叉编译遇到的几个问题,请高手帮忙解答 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-08-29 10:09 |只看该作者 |倒序浏览
我需要通过交叉编译生成可执行文件,在ARM裸板(不带操作系统)上运行
基于上述前提,现在遇到几个问题,求高手帮忙解答,多谢

1.从网上下载了arm-linux-gcc4.3.2, 同时下载了32位的lib库,在64位ubuntu上搭建了交叉编译环境。如果不带编译选项,arm-linux-gcc -o main xxx.c xxx.c可以编译生成目标文件,如果带-mcpu cortex-m4 会提示error.bad value(cortex-m4) for -mcpu=switch,请问这个怎么解决?
我的arm是STM32F429,对应的架构就是cortex-m4,另外我试过带其它选项,-mcpu=cortex-a8则会提示warning:switch -mcpu=cortex-a8 conflicts with -mcpu=switch,assuming cpu feature set,此时可以生成目标文件

2.第一个问题没解决,我就不带编译选项继续往下走,通过file查看生成的可执行文件
main: ELF 32-bit LSB executable, ARM, EABI5 Version 1(SYSV), dynamically linked(uses shared libs), for GNU/Linux 2.6.14, not stripped
请问这个怎么确认这个文件可以在哪些架构的arm上执行?

3. 用IAR编译我的工程生成main.bin,通过j-tag加载可以运行并能够从串口打印数据。通过arm-linux-gcc生成目标文件main,
用J-TAG加载提示不支持这个文件类型,我手动将main修改为main.bin,J-TAG就可以识别并加载,请问这个手动修改对文件有影响吗?

4.将手动修改的main.bin通过J-TAG加载到arm中,输入开始地址08000000,执行program&verifyy,但是不通过串口看到打印输出,说明有问题。请问生成的文件可以直接在裸板上执行吗?执行main之前是否需要初始化、设置堆栈等操作?如果需要,应该怎么做?

另外,因为我的工程不依赖任何库函数,printf\memset\memcpy等都是自己重新写的,所以交叉编译环境也没有下载ARM需要的内核lib,这个应该不影响吧?

先多谢各位帮忙解答的大牛们

论坛徽章:
0
2 [报告]
发表于 2014-08-29 15:36 |只看该作者
没有人帮忙解答吗?

论坛徽章:
0
3 [报告]
发表于 2014-09-14 13:48 |只看该作者
IAR编译编译器编译出来的默认是bin文件,而arm-linux-gcc编译出来的是elf文件,一般运行在Linux系统中。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP