当前位置:  技术问答>linux和unix

makefile链接的问题

    来源: 互联网  发布时间:2015-12-29

    本文导语:  我在移植ucos到avr平台的时候出了点错,望高手指点!  编译环境:winavr  makefile所在目录下有以下文件:(为了限制长度,故会省略一些)  1.includes.h 内容如下:  #include   #include   #include   #include    "os_cpu.h"...

我在移植ucos到avr平台的时候出了点错,望高手指点! 
编译环境:winavr 
makefile所在目录下有以下文件:(为了限制长度,故会省略一些) 
1.includes.h 内容如下: 
#include  
#include  
#include  

#include    "os_cpu.h" 
#include    "os_cfg.h" 
#include    "ucos_ii.h" 
#include    "pc.h" 
2.os_cpu.h 
......(只是一些宏定义,全部省略) 
3.os_cfg.h 
......(也只是一些宏定义,全部省略) 
4.ucos_ii.h 
#ifdef __cplusplus 
extern "C" { 
#endif 
......(只是一些宏定义,以下全部省略) 
5.pc.h 
......(一些宏定义和函数原型,全部省略) 
6.ucos_ii.c 
#define  OS_GLOBALS                           // Declare GLOBAL variables                              
#include "includes.h" 


#define  OS_MASTER_FILE                       //Prevent the following files from including includes.h  
#include "os_core.c" 
#include "os_flag.c" 
#include "os_mbox.c" 
#include "os_mem.c" 
#include "os_mutex.c" 
#include "os_q.c" 
#include "os_sem.c" 
#include "os_task.c" 
#include "os_time.c" 
7.os_core.c,os_flag.c,os_mbox.c,os_mem.c,os_mutex.c,os_q.c,os_sem.c,os_task.c,os_time.c九个c文件,每个文件的开头都一样 
#ifndef  OS_MASTER_FILE 
#include "includes.h" 
#endif 
.........(以下省略) 
8.os_cpu_c.c 
#define  OS_CPU_GLOBALS 
#include "includes.h" 
.......(以下是各个函数的具体实现,省略) 
9.os_cpu_a.S,只是个汇编程序 
#define OS_CPU_A 
#include "os_cpu.h" 
.......(以下是汇编程序,省略) 
10.test.c 
主程序,其实是空的 

我的makefile要编译的是三个c文件,依次是:ucos_ii.c  os_cpu_c.c test.c 
但make的时候,编译没出错,连接的时候却错了,大体是找不到函数定义。 
可为什么编译的时候没错呢? 

错误如下: 
Linking: testpp.elf 
avr-gcc -mmcu=atmega128 -I. -gdwarf-2 -DF_CPU=14745600UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wundef -Wa,-adhlns=/ucos_ii.o  -std=gnu99 -Wundef -MD -MP -MF .dep/testpp.elf.d /ucos_ii.o /os_cpu_c.o /os_cpu_a.o --output testpp.elf -Wl,-Map=testpp.map,--cref    -lm 
D:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm128.o: In function `__vectors': 
../../../../../avr-libc-1.4.4/crt1/gcrt1.S:51: undefined reference to `main' 
/ucos_ii.o: In function `OS_TaskIdle': 
D:hahagcc1/os_core.c:1138: undefined reference to `OSTaskIdleHook' 
/ucos_ii.o: In function `OS_TCBInit': 
D:hahagcc1/os_core.c:1361: undefined reference to `OSTCBInitHook' 
/ucos_ii.o: In function `OSInit': 
D:hahagcc1/os_core.c:233: undefined reference to `OSInitHookBegin' 
D:hahagcc1/os_core.c:262: undefined reference to `OSInitHookEnd' 
/os_cpu_a.o:os_cpu_a.S:324: relocation truncated to fit: R_AVR_13_PCREL against symbol `OSTimeTick' defined in .text section in /ucos_ii.o 
/os_cpu_a.o:os_cpu_a.S:326: relocation truncated to fit: R_AVR_13_PCREL against symbol `OSIntExit' defined in .text section in /ucos_ii.o 
make.exe: *** [testpp.elf] Error 1 

> Process Exit Code: 2 
> Time Taken: 00:02 

请高手不吝赐教! 

|
"但make的时候,编译没出错,连接的时候却错了,大体是找不到函数定义。 
可为什么编译的时候没错呢? "

有一些版本的gcc 就是这样子的,你在头文件里把函数声明一下试试看。
最好把你的makefile贴出来。

    
 
 

您可能感兴趣的文章:

  • 编译静态链接库,其中使用了其它链接库,该如何写makefile
  • 请问编译静态链接库的makefile该如何写?
  • makefile文件的链接问题。
  • 怎么用Makefile链接库(急啊!)
  • 如何编写 makefile.am 文件让其make后生成 lib*.so* 格式的链接库文件?
  • makefile.am中生成.a静态库的同时,链接其他.a静态库或.la动态库的问题
  • linux2.6驱动的Makefile中如何链接静态库
  • linux通过makefile编译静态链接库,有问题求解?
  • 求解makefile问题,makefile.conf的作用?
  • 请教根据Makefile.am自动生成Makefile的问题
  • Makefile使用遇到的问题!"Makefile:3:missing the separator.stop"在线等待.......
  • 关于makefile的问题。一个makefile如何生成两个可执行文件。
  • 亟待解决的问题!Makefile问题
  • 关于makefile文件的问题
  • makefile include的问题
  • linux中makefile大小写问题
  • 关于多层Makefile编译的问题
  • 初写MAKEFILE遇到问题,麻烦大家帮忙。
  • 多个Makefile合并的问题
  • 急!求助,关于makefile的问题
  • 关于makefile 中NUL报错及遗漏“endif”的问题
  • 用mkmf生成makefile的问题
  • 一个 makefile 问题
  • 问一个Makefile的问题
  • 关于makefile的问题,回的请进
  • makefile 简单问题
  • makefile 1254-004问题
  • Makefile的问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Makefile.in,Makefile.am,Makefile.bor应该怎么用?
  • makefile.am和makefile.in是什么文件,与makefile有什么联系吗?
  • 最近在学习linux C 看到了makefile部分,觉得makefile的语法很难理解,Makefile 的语法是不是shell语法?
  • 从网上载了个C++程序的源代码,包含38个.cpp和.h,还有makefile.in和makefile.am两个文件,但无configure和makefile.请问怎么编译?谢谢!
  • 有makefile.am,有 makefine.in 为什么就是没有Makefile?
  • makefile如何调用文件目录下的makefile
  • 怎麼樣使Makefile.in生成Makefile?
  • 【急!】一个程序里有好多文件夹里都有Makefile,如何找到最管用的makefile
  • 【makefile使用】请问怎样在shell中获取makefile的最终目标?
  • unix下面make makefile文件,提示“makefile is up-to-date",怎么办呀?
  • Makefile是如何输出执行的路径的,表示执行的是那个Makefile
  • 下的tar.gz源码里只有makefile.in和makefile.am
  • 一句 makefile 的解释 -- makefile 与 shel 结合
  • linux makefile error :Makefile:335: *** commands commence before first target。
  • [test@localhost ~]$ cat <makefile >catfile 跟cat > catfile <makefile是一样的吧?
  • 关于makfile,makefile.in, makefile.am. configure之间的关系
  • win32下编译Linux 下的项目(makefile.am和makefile.in)
  • make -f makefile 时提示 Make: Must be a separator on rules line 5. Stop. 为什么,makefile 如下
  • 请问如何写动态的Makefile,或是有什么好的Makefile写法?麻烦分享一下,谢谢
  • Makefile :scripts/Makefile.build:49: *** CFLAGS was changed in "/opt/zaptel-1.4.


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3