【发布时间】:2011-09-08 14:11:17
【问题描述】:
我正在使用一个名为“libdscud-6.02.a”的预构建库,其中包含许多针对某些特定硬件的低级 I/O 调用。由此,我创建了一些包装函数,并将其编译到一个名为“io.o”的目标文件中。
现在,我正在使用这些 I/O 函数编译一些程序,而不必这样做:
gcc libdscud-6.02a io.o -o test test.c
我想要这个:
gcc io.o -o test test.c
有什么方法可以将 .a 文件链接到 .o 文件中,所以我只需要在编译二进制文件时包含 .o 文件吗?
【问题讨论】:
-
虽然正确的方法是
-L . -ldscud-6.02,但真正的问题是你想要达到什么目的?为什么要减少前者对后者的调用? -
我正在做一个巨大的项目,其中有大量的小程序正在编译。如果我不必记住同时添加库和目标文件,它只会让它更容易一些。这似乎也有些多余,因为我永远不会只需要其中一个文件。
-
看这个问题,我觉得基本一样:stackoverflow.com/q/4528635/12711
-
使用合适的 Makefile 怎么样?!特别适合大型项目!
-
@psycho 我已经在使用 Makefile,但即使在 Makefile 中,我也需要为每个需要它的程序指定包含这两个文件。我想我可以使用下面发布的 make 变量,但我希望有一个更清洁的解决方案。