我正在尝试使用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>
任何人都知道可能的原因是什么? 非常感谢!
答案 0 :(得分:0)
-nostdlib
标志表示&#34;不与标准C库链接&#34;。 malloc
是libc函数。您可以使用libc链接(删除-nostdlib
),或者,如果需要,则执行另一个malloc
(或者不要使用此功能)。
答案 1 :(得分:0)
包含文件用于函数的编译时间分辨率,而不是链接符号的时间分辨率。
这是链接时间问题。
您的问题很可能是由-nostdlib
导致的,因为您已告知gcc
在链接期间不包含任何常规标准库函数。 (可能是-fono-builtin
,但我不这么认为。)
您需要提供自己需要的任何标准函数的实现(在本例中为malloc),或者手动链接任何包含malloc
(-lgcc
或许?)的库,或者删除{{1}来自你的编译和链接线。