搜索
bottom↓
回复: 0

请教一下交叉编译

[复制链接]

出0入0汤圆

发表于 2012-4-14 13:19:04 | 显示全部楼层 |阅读模式
初学,自写了一段简单的汇编程序,编译出错,请教下各位。
本来这段程序是在KeilARM上用的,这两天开始学交叉编译,好像很多语法的写法都不一样了,于是,修改,然后,就成下面这样了。
从错误信息看,似乎main函数定义重复定义了,在后面的错误信息,很莫名其妙,明明有这些函数的。
请各位帮忙看看是怎么回事?
或者介绍点这方面的教材让我观摩一下。

错误信息如下:
root@ubuntu:/program/mmu# make
arm-linux-gcc -Wall -O2 -o ini.o ini.S
ini.S:63:2: warning: no newline at end of file
/gcc-3.4.5-glibc-2.3.6/bin/../lib/gcc/arm-linux/3.4.5/../../../../arm-linux/lib/crt1.o(.text+0x30): In function `_start':
: undefined reference to `main'
/tmp/ccUH57Gc.o(.text+0x94): In function `copy2sdram':
: undefined reference to `create_pagetable'
/tmp/ccUH57Gc.o(.text+0x98): In function `copy2sdram':
: undefined reference to `MMUOn'
/tmp/ccUH57Gc.o(.text+0xbc): In function `haltloop':
: undefined reference to `main'
collect2: ld returned 1 exit status
make: *** [ini.o] Error 1

代码如下:
.text
.extern main
.extern create_pagetable
.extern MMUOn
.global start
start:
//1        设置栈
        ldr sp, =0x40000FFF
//2        关看门狗
        mov        r0, #0
        ldr        r1, =0x53000000
        str        r0, [r1]
//3        初始化GPIO
//        (n)LED=(n+4)GPB
        mov r0, #0
        ldr r1, =0x56000014
        str r0, [r1]
        mov r0, #0x15400
        ldr r1, =0x56000010
        str r0, [r1]
//4        初始化SDRAM
        ldr r0, =memsettab
        ldr r1, =0x48000000
        mov r2, #13
memini:
        ldr r3, [r0],#4
        str r3, [r1],#4
        sub r2, r2,#1
        bne memini
memsettab:
        .long 0x22111110
        .long 0x00000700
        .long 0x00000700
        .long 0x00000700
        .long 0x00000700
        .long 0x00000700
        .long 0x00000700
        .long 0x00018005
        .long 0x00018005
        .long 0x008C07A3
        .long 0x000000B0
        .long 0x00000030
        .long 0x00000030
//5        搬运代码
        mov r0, #2048
        ldr r1, =0x30004000
        mov r2, #4096
copy2sdram:
        ldr r3, [r0], #4
        str r3, [r1], #4
        sub r2, r2, #4
        bne copy2sdram
//6        建立页表
        bl        create_pagetable
//7        开启MMU
        bl        MMUOn
//8        进入main()
        ldr sp, =0xA4000000
        ldr        pc, =main
haltloop:
        b haltloop

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 17:34

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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