如何设置automake中库的顺序?

发布于 2024-08-09 08:32:53 字数 611 浏览 1 评论 0原文

如何设置automake中库的顺序?

在我的 am 文件中,我有类似的内容:

myprog_DEPENDENCIES = adhoc-target
myprog_SOURCES = myprog.c
myprog_LDADD = libmine.la
myprog_LDFLAGS = -static -L/home/user/lib -ladhoc

现在,当我编译时,我也得到类似的编译行:

gcc -static myprog-myprog.o -o myprog -L/home/user/lib -ladhoc ./.libs/libmine.a

问题是 libmine.a 依赖于 libadhoc.a,因此编译行应该是:

gcc -static myprog-myprog.o -o myprog ./.libs/libmine.a -L/home/user/lib -ladhoc

How do you set the order of templates在汽车制造商? (或者可能是一个解决方法;如何在编译行中重复所有库。这就是我在自定义 Makefile 中所做的。)

How do you set the order of libraries in automake?

In my am file I have something like:

myprog_DEPENDENCIES = adhoc-target
myprog_SOURCES = myprog.c
myprog_LDADD = libmine.la
myprog_LDFLAGS = -static -L/home/user/lib -ladhoc

Now, when I compile I get this compile line similar too:

gcc -static myprog-myprog.o -o myprog -L/home/user/lib -ladhoc ./.libs/libmine.a

The problem is that libmine.a depends on libadhoc.a, therefore the compile line should be:

gcc -static myprog-myprog.o -o myprog ./.libs/libmine.a -L/home/user/lib -ladhoc

How do you set the order of libraries in automake? (Or maybe a work around; how do you repeat all the libraries in the compile line. That's what I do in my custom Makefiles.)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

聆听风音 2024-08-16 08:32:53

来自 Automake 手册(主要是 §8.1.2 但也 < a href="https://www.gnu.org/software/automake/manual/html_node/Program-and-Library-Variables.html" rel="noreferrer">§8.4):

PROG_LDADD 不适合
传递程序特定的链接器标志
-l-L-dlopen
-dlpreopen)。所以,使用
用于此的 PROG_LDFLAGS 变量
目的。

这意味着您可以(但实际上您应该)在 LDADD 中使用 -l-L,而不是在 LDFLAGS 中。换句话说,你的 Makefile.am 应该简单地读取

myprog_DEPENDENCIES = adhoc-target
myprog_SOURCES = myprog.c
myprog_LDADD = libmine.la -L/home/user/lib -ladhoc
myprog_LDFLAGS = -static 

From the Automake manual (mostly §8.1.2 but also §8.4):

PROG_LDADD is inappropriate for
passing program-specific linker flags
(except for -l, -L, -dlopen and
-dlpreopen). So, use the
PROG_LDFLAGS variable for this
purpose.

That implies you can (but actually you should) use -l and -L in LDADD, not in LDFLAGS. In other words your Makefile.am should simply read

myprog_DEPENDENCIES = adhoc-target
myprog_SOURCES = myprog.c
myprog_LDADD = libmine.la -L/home/user/lib -ladhoc
myprog_LDFLAGS = -static 
梦开始←不甜 2024-08-16 08:32:53

automake 书中的一个想法 (http://sources.redhat.com/autobook/autobook /autobook_92.html):从 libmine 和 libadhoc 创建一个方便的库,并将 myprog 链接到它。

One idea from the automake book (http://sources.redhat.com/autobook/autobook/autobook_92.html): create a convenience library out of libmine and libadhoc, and link myprog against that.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文