首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >autools,libtool和-Wl,- and archive

autools,libtool和-Wl,- and archive
EN

Stack Overflow用户
提问于 2016-10-12 16:33:07
回答 1查看 657关注 0票数 1

我有一个和this question非常相似的问题。我需要告诉链接器添加静态库,尽管似乎已经引用了它的符号。这样做的原因是,库中包含一个.init中的函数或使用( __attribute__ ((constructor)))执行其初始化,该初始化将从主程序调用注册()函数来注册其功能(读取:传递其他函数指针)。

因此,尽管主程序中似乎没有使用库中的任何符号,但只要库中的函数通过库init函数注册,主程序就会立即调用库中的函数。

但我使用的是libtool...因此,以前面提到的问题中给出的示例为例,我需要编写如下内容:

代码语言:javascript
复制
bin_PROGRAMS = pktanon 
pktanon_SOURCES = main.cpp
pktanon_DEPENDENCIES = $(lib_LIBRARIES)
pktanon_LDADD = libpktanon.la $(LDADD) 

注意lib的扩展名是"la“而不是"a”。

现在,我该如何将--whole-archive选项传递给链接器呢?the question中建议的答案假设归档文件(.a文件)的路径是已知的...在Makefile.am中硬编码像.libs/libptanon.a这样的路径是不对的……链接器不喜欢在其整个存档otpion中遇到.la文件,如果尝试:

代码语言:javascript
复制
pktanon_LDFLAGS = -Wl,--whole-archive,libpktanon.la,--no-whole-archive

有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2016-10-19 00:24:14

使用--whole archive是不可移植的,那么为什么不创建一个Libtool便利库呢?在您的Automake Makefile.am中,将noinst_添加到库中,然后它将获取库中的所有目标文件,并将其添加到链接到它的任何内容中,而不是创建一个(可能不是pic的)静态归档。它是可移植的,应该适用于这种情况,因为它看起来根本不需要一个库。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39994016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档