如何在 autoconf 配置脚本/makefile 中添加到库的链接
我是一个自动工具新手 我很难轻松地弄清楚如何做 将特定库链接到配置的目标之一。
我有一个源包,我想以通常的方式构建: ./配置&&制作&& make install
不幸的是,其中一个 cpp 缺少对另一个库的引用。 手动编译它(调整命令行)是可行的。但我宁愿 “修补”编译脚本。 编辑链接引用的标准位置在哪里?
undefined reference to `boost::system::get_system_category()
顺便说一句,这是我的错误消息。
I am an autotools newb
and I have difficulties figuring out howto easily
link a specific library into one of the configured targets.
I have a source package that I want to build the usual way:
./configure && make && make install
Unfortunately one of the cpps has a missing reference to another library.
Compiling it by hand (adjusting the commandline) works. But I would rather
"patch" the compile script.
Where is the standard place to edit linking references?
undefined reference to `boost::system::get_system_category()
That is my error message btw.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您需要在
Makefile.am
中的AM_LDFLAGS
中添加相关的-l
标志;例如:请注意,Boost 库通常以后缀结尾——表示构建配置的字母序列。在上面的例子中,后缀是
-mt
。这在您的安装中可能会有所不同(尽管-mt
变体通常在 POSIXy 系统、IME 上可用)。我做了这样的事情:
BOOST_LIB_SUFFIX
是一个珍贵的变量(请参阅AC_ARG_VAR
),默认为-mt
。You need to add the relevant
-l
flag toAM_LDFLAGS
inMakefile.am
; e.g.:Note that Boost libraries generally end in a suffix—a sequence of letters that indicates the build configuration. In the above example, the suffix is
-mt
. This could be different in your installation (though the-mt
variant is commonly available on POSIXy systems, IME).I do something like this:
BOOST_LIB_SUFFIX
is a precious variable (seeAC_ARG_VAR
) that defaults to-mt
.使用
ax_cxx_check_lib.m4
,因为boost_system没有任何可以使用AC_CHECK_LIB
检查的外部“C”符号(未损坏的名称):http://ac-archive.sourceforge.net/guidod/ax_cxx_check_lib.m4
下载上面的文件并将其命名
acinclude.m4
,并将其放入项目根目录的m4
文件夹中。在
configure.ac
中:在
Makefile.am
中:Use
ax_cxx_check_lib.m4
because boost_system does not have any extern "C" symbols (unmangled names) that can be checked withAC_CHECK_LIB
:http://ac-archive.sourceforge.net/guidod/ax_cxx_check_lib.m4
Download the file above and name it
acinclude.m4
, and put it in them4
folder in your project root.In
configure.ac
:In
Makefile.am
: