编译make的出错提示解决方案

编译出错笔记: start.s:20: Error: no such instruction: `ldr r0,=WTCON' 错误:没有这样的指令 解决:编译文件后缀名必须为大写S,改为start.S

start.S:34: Error: bad instruction `ldr,r0,=0x4C000004' 错误:坏的指令,指令名ldr后面不能跟逗号 解决:改为ldr r0,=0x4C000004 start.S:52: Error: bad expression -- `ldr r0,#0' 错误:指令参数出错,使用#0参数是使用mov,不是ldr 解决:改为mov r0,#0 start.o(.text+0xc8): In function `SDRAM_CONFIG': : undefined reference to `lr' 错误:在start.S中对LR未定义的引用 解决:在start.S中找到 ldr pc,=lr ,编译器误解lr是一个变量,这里应该写成mov pc,lr(完成一个子程序返回) 12: error: syntax error before "int" 错误:'int'符号之前有语法错误 13: warning: comparison of distinct pointer types lacks a cast 错误:指针与其它不同类型的值比较,没有使用强制转换 解决:使用强制转换使两个变量改为相同类型 comparison: 比较 distinct pointer types: 不同的类型指针 a cast:强制转换 19: warning: conflicting types for built-in function 'strcpy' 错误:strcpy函数与内置函数库冲突,(比如:printf,strlen,puts,scanf等都是内置函数库) 解决:  1.在arm-linux-gcc编译命令后面加上-fno-builtin或者-fno-builtin-FUNCTION 选项,你就可以自己实现这些函数而不冲突了。           2.把这些函数改个名称,以便不冲突。 11: error: `str' undeclared (first use in this function) 错误:str变量没有声明定义 1: error: syntax error before "include" 错误:在“include”标号之前有语法错误 74: warning: return type of 'main' is not `int' 错误:main函数的返回值不是int型 解决:将void main(void){} 改为int main(void){return 0;} 78: warning: implicit declaration of function `uart0_init' 错误:74行中用到的uart0_init函数只是隐形声明(implicit declaration),在这个文件中没有extern声明或者调用头文件 解决:1.在本文开头上添加: extern void uart0_init(void);          2.添加该函数的头文件,例如: #include "serial.h" arm-linux-ld:uboot.lds:2: parse error 错误:uboot.lds文件中第2行语句解析(parse )错误. 解决: 1.lds链接脚本中每个符号(:或者=)左右都要加上空格 , 或TAB按键 ,不然就会出错,例如以下代码:

    . = ALIGN(4); 
    .rodata:{*(.rodata)} //这里:左右没有空格,将出错,改为 .rodata : {*(.rodata*)}

2.lds链接脚本中除了"{}和()"后都不能加";"逗号,例如以下代码

    .rodata : {*(.rodata*)}; //这里"}"后面加了";"逗号,将出错 

3.lds脚本sections中若是以当前地址.等于xxx时,.后面都要加空格,例如以下代码:

    .= 0x33f80000; //当前0地址里赋入0X33f80000,这里.后面没有加空格,将出错,改为	
    . = 0x33f80000; 
    . = ALIGN(4); 

4.lds脚本中定义符号时,都要使符号在前,例如以下代码:

    __bss_start = .; 
    .bss : { *(.bss) *(COMMON) }
    . = __bss_end; //这里定义"__bss_end"符号出错,应该改为	__bss_end = .;

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏python3

python if else 流程判断

Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。 可以通过下图来简单了解条件语句的执行过程:

1922
来自专栏青玉伏案

设计模式(五): 简单而又不失其重要性的单例模式(Singleton Pattern)

上篇博客我们系统的介绍了三种工厂模式,今天我们就来介绍一下单例模式。单例模式虽然简单,但是还是比较重要的,是常用设计模式之一。在之前的博客《Objective-...

2055
来自专栏IT可乐

Redis详解(三)------ redis的五大数据类型详细用法

  我们说 Redis 相对于 Memcache 等其他的缓存产品,有一个比较明显的优势就是 Redis 不仅仅支持简单的key-value类型的数据,同时还提...

1240
来自专栏北京马哥教育

15分钟学会shell脚本,最简明的教程在这里

本文由马哥教育M23期学员推荐,转载自互联网,作者为Hnongy,感谢作者的辛苦付出和贡献。 Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的...

3197
来自专栏北京马哥教育

sed的基本用法详解

在Linux的世界中,有着一个文本三剑客的称呼,它们分别代表grep(文本过滤),sed(流编辑器),awk(gawk)(报告生成器)。 它们是强大的文本处...

2916
来自专栏Pythonista

python全栈考试

a.实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登陆成功,否则登陆失败!

2172
来自专栏流柯技术学院

Loadrunner中web_find和web_reg_find函数的使用与区别

总结一下Loadrunner中的检查点函数,主要介绍两个函数:web_find()和web_reg_find();这两个函数均用于内容的查找,但两者也有本质的区...

2092
来自专栏听Allen瞎扯淡

Sed 命令详解

sed是stream editor的简称,也就是流编辑器。它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern spa...

941
来自专栏java一日一条

JVM运行时数据区域及GC

方法区 (Method Area or Permanent Generation):

1102
来自专栏IMWeb前端团队

Zepto源码分析之ie模块

本文作者:IMWeb 谦龙 原文出处:IMWeb社区 未经同意,禁止转载 前言 ? Zepto中的ie模块主要是改写getComputedStyle...

1998

扫码关注云+社区

领取腾讯云代金券