make期间出错

时间:2014-09-12 10:09:01

标签: compilation makefile

我正在尝试使用make编译我的文件,但是,它显示以下错误

/usr/bin/gcc -march=i586 -m32 -fno-builtin -fno-stack-protector -nostdlib -c -Wall     -O0 -DBSDURG -DVERSION=\""`cat version`"\" -I../include -o binaries/farm.o ../system/farm.c

Loading object files to produce GRUB bootable xinu
binaries/farm.o: In function `initialize':
farm.c:(.text+0x2c): undefined reference to `malloc'

经过一番搜索,人们提到不包括“stdlib.h”可能是原因,但是,我已经把它包括在内了

/*  farm.c  - definition of farmer and vegetarian lab */

#include <xinu.h>
#include "farm.h"
#include <stdio.h>
#include <stdlib.h>

任何人都知道可能的原因是什么? 非常感谢!

2 个答案:

答案 0 :(得分:0)

-nostdlib标志表示&#34;不与标准C库链接&#34;。 malloc是libc函数。您可以使用libc链接(删除-nostdlib),或者,如果需要,则执行另一个malloc(或者不要使用此功能)。

答案 1 :(得分:0)

包含文件用于函数的编译时间分辨率,而不是链接符号的时间分辨率。

这是链接时间问题。

您的问题很可能是由-nostdlib导致的,因为您已告知gcc在链接期间不包含任何常规标准库函数。 (可能是-fono-builtin,但我不这么认为。)

您需要提供自己需要的任何标准函数的实现(在本例中为malloc),或者手动链接任何包含malloc-lgcc或许?)的库,或者删除{{1}来自你的编译和链接线。