gpt4 book ai didi

c - 如何在 Makefile.am 或 configure.ac 中包含 -lm

转载 作者:行者123 更新时间:2023-12-04 03:02:49 26 4
gpt4 key购买 nike

我有一个名为 neuromz 的程序,我使用

编译它
gcc neuromz.c -lm -o neuromz

它工作正常,但如果我尝试将 configure.acMakefile.am 添加到我的项目中,使用 Makefile.am:

bin_PROGRAMS = neuromz
neuromz_SOURCES = neuromz.c neuromz.h ann.c ann.h
neuromz_CFLAGS = -lm

结果是:

/home/mz/programming/ctest/ANN/ann.c:11: undefined reference to `exp'
/home/mz/programming/ctest/ANN/ann.c:11: undefined reference to `exp'

我该如何解决?

最佳答案

你的命令行:

gcc neuromz.c -lm -o neuromz

是 gcc 帮助转换为必要的编译步骤的简写,并且链接步骤,就像您所做的一样:

gcc -c -o neuromz.o neuromz.c   # Compile
gcc -o neuromz neuromz.o -lm # Link

Automake 总是将编译和链接分开,因为这通常使尽可能经济地 build 。

neuromz_CFLAGS = -lm

-lm 添加到编译器选项 (CFLAGS) 以编译 neuromz.c。但是 -lm(= 链接数学库)是一个链接选项,在编译中被忽略。你需要它在链接选项中(LDADD):

neuromz_LDADD = -lm

参见 automake manual 8.4 Program and Library Variables

关于c - 如何在 Makefile.am 或 configure.ac 中包含 -lm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47617174/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com