我看书上的C语言例程是调用了printf函数的。
但我编的一个小程序里却因为调用了printf函数,而链接不成功。
我的程序框架是这样的:
#include "regs2407.h"
#include "stdio.h"
void main(void)
{
…… ;初始化
int i,j, c;
i = 1;
j = 2;
c = i+j;
printf("%d", c);
}
cmd文件:
MEMORY
{
PAGE 0 : VECS : origin = 0h , length = 040h /* VECTORS */
PROG : origin = 40h , length = 0FFC0h /* PROGRAM */
PAGE 1 : MMRS : origin = 0h , length = 060h /* MMRS */
B2 : origin = 0060h , length = 020h /* DARAM */
B0 : origin = 0200h , length = 0100h /* DARAM */
B1 : origin = 0300h , length = 0100h /* DARAM */
DATA : origin = 8000h , length = 8000h /* XDM */
}
SECTIONS
{
.text :{}> PROG PAGE 0
.cinit :{}> PROG PAGE 0
.data :{}> DATA PAGE 1
.stack :{}> DATA PAGE 1
.bss :{}> B0 PAGE 1
.vectors:{}> VECS PAGE 0
}
注:cmd文件不是我自己写的,是从ti上下的例程中照搬过来的。
但build时编译器总是出现这样的错误提示:
>> cannot allocate .bss in B0 (page 1)
>> errors in input - SumTest.out not built
Build Complete,
2 Errors, 0 Warnings.
把printf注释掉编译就通过了。
请问各位高手,这是什么原因?究竟能不能调用printf函数? |