c - make - 指定要从命令行链接的库(没有 Makefile)

标签 c makefile

对于简单的程序,例如 proc.c只有一个源文件,只用make proc编译链接很方便,默认搜索 proc.c并创建 proc作为输出文件。无需创建 Makefile为此。

如果proc.c需要链接一些库,例如数学库(由 <math.h> 定义)。使用 gcc直接,我们可以使用gcc -c proc.c -o proc -lm .有没有等价的 make指定 -lm 的命令行选项所以我们可以使用 make直接命令而不写 Makefile


Basile Starynkevitch 建议的类似任务:

Makefile with Multiple Executables

最佳答案

不带 makefile 的 make 链接库

如果您的源文件是 prova.c,那么您可以执行以下操作:

$> export LDFLAGS=-lm; make prova

或:

$> export LDLIBS=-lm; make prova    # LDLIBS works on Linux (but LDFLAGS doesn't)

或:

$ make prova LDLIBS=-lm

因为 Make 使用了这个隐式规则:

%: %.o    # Link object file
    $(CC) $(LDFLAGS) n.o $(LOADLIBES) $(LDLIBS)

Make 有几个隐式规则,您可以使用 make -p 查看所有这些规则。 有关详细信息,请参阅此 post .

关于c - make - 指定要从命令行链接的库(没有 Makefile),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34702937/

相关文章:

为 openvz VM 编译内核模块?

c - C中的递归打印函数

c - Makefile中的Clean命令无法正常使用

Clang libFuzzer 未定义对 `__sanitizer_cov_trace_const_cmp8' 的引用

c++ - 从 native C/C++ 生成并运行 LLVM 代码

c - 内存分配C

c - #define Printf() 字符串中的预处理器替换

include - 在 Makefile 中为头文件添加目录

c++ - 在 GCC 上构建的函数多重定义链接器错误 - Makefile 问题

makefile - 这是 GNU make `filter` 中的错误吗?