Compilation 制造过程中的错误
我试图使用make编译我的文件,但是,它显示了以下错误Compilation 制造过程中的错误,compilation,makefile,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 boota
/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>
/*farm.c-农民和素食者实验室的定义*/
#包括
#包括“farm.h”
#包括
#包括
有人知道可能的原因吗?
非常感谢
-nostlib
标志表示“不链接标准C库”<代码>malloc是libc函数。您可以链接libc(通过删除-nostlib
),或者,如果需要,可以实现另一个malloc
(或者不使用此函数)。包含文件用于函数的编译时间解析,而不是符号的链接时间解析
这是一个链接时间问题
您的问题很可能是由-nostlib
引起的,因为您已告知gcc
在链接过程中不要包含任何正常的标准库函数。(可能是-fono-builtin
,但我不这么认为。)
您需要提供自己需要的任何标准函数的实现(在本例中为malloc),或者手动链接包含的任何库malloc
(-lgcc
),或者从编译和链接行中删除-nostlib
)