zoukankan      html  css  js  c++  java
  • 编译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 = .;
    

      

  • 相关阅读:
    英语阅读重点单词总结
    Redis 应用
    Python 列表[::-1]翻转
    golang数据类型
    golang变量
    k8s 容器控制台日志收集
    css显示模式
    css选择器
    css样式引入
    GIL锁
  • 原文地址:https://www.cnblogs.com/lifexy/p/7326172.html
Copyright © 2011-2022 走看看