2012-09-28 36 views

回答

8

而不是

cc -g -lm -DBLITZ_HOST_IS_LITTLE_ENDIAN foo.c 

尝试:

cc -g -DBLITZ_HOST_IS_LITTLE_ENDIAN foo.c -lm 

当链接器搜索库,它连接在包含了以前未定义的符号定义模块。

如果链接器在foo.o之前搜索-lm,则pow()尚未定义。相反,如果foo.o第一个来,它取消定义pow(),然后-lm可以解决。


编辑:要在的Makefile完成这项建议,进行这些更改:

CFLAGS=-g -DBLITZ_HOST_IS_LITTLE_ENDIAN 
LDLIBS=-lm 

... 

asm: asm.c 
     $(CC) $(CFLAGS) asm.c $(LDLIBS) -o asm 
+0

我试过了,仍然没有工作。 :/ – BSull

+0

然后告诉我们更多关于你的编译环境,精确的* entire *命令行和一个示例程序。 –

+0

而你看到的确切的错误信息。 –

0

我最近挨使用自动生成器,即drone.io这个问题。

问题是Ubuntu 12.04中的gcc默认链接了-Wl, - 根据需要。 在我的情况下,该项目使用autotools,这意味着我懒得写任何东西来修改编译顺序。相反,修改根据需要标志解决了问题。

-gabriel_LDFLAGS = $(GLIB2_LIBS) $(DBUS_LIBS) -lssh 
+gabriel_LDFLAGS = -Wl,--no-as-needed $(GLIB2_LIBS) $(DBUS_LIBS) -lssh 

对于完全的信息,您可以检查固定犯https://bitbucket.org/kikeenrique/gabriel/commits/f08eefdca3f7bb90f48f5a6fbfc8839422572508

你可以看看to the log with errors BEFORE applying the fix,你也可以看看to the log without errors AFTER applying the fix

相关问题