我正在尝试使用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>有人知道可能的原因是什么吗?非常感谢!
发布于 2014-09-12 19:30:22
-nostdlib标志的意思是“不要链接到标准C库”。malloc是libc函数。您可以使用libc链接(通过删除-nostdlib),或者,如果这是必需的,-实现另一个malloc (或者不使用此函数)。
发布于 2014-09-12 19:33:40
包含文件用于函数的编译时解析,而不是符号的链接时解析。
这是一个链接时间问题。
您的问题很可能是由-nostdlib引起的,因为您已经告诉gcc在链接期间不要包含任何普通的标准库函数。(可能是-fono-builtin,但我不这么认为。)
您需要提供您自己的所需标准函数的实现(在本例中为malloc),或者手动链接到包含malloc的任何库(也许是-lgcc?)或者从编译和链接行中删除-nostdlib。
https://stackoverflow.com/questions/25805830
复制相似问题