问题标签 [libtool]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1216 浏览

shared-libraries - 如何使用 pkglib_LTLIBRARIES = test.la 仅构建 *.so

我正在使用自动工具来构建共享对象。

pkglib_LTLIBRARIES在我的 Makefile.am 中使用会导致构建libtest.laAND 。libtest.so

希望它构建/安装libtest.so

这可能吗?

0 投票
1 回答
272 浏览

linux - libtool 将额外的“U”添加到 .so 文件名

我有一个用 autotools 构建的项目,分为两个文件夹;第一个lib创建一些库,第二个tools链接它们。
构建失败,因为 libtool 在重新链接时将库重命名如下:

重命名发生后,反正之前的名字没有恢复,也没有创建新的mylib.1.0.0 ,所以像mylib这样的符号链接仍然指向没有多余U的名字,链接失败。
有没有办法避免这种情况?或者甚至可能完全避免重新链接?我正在使用 libtool 1.5.6 版。

0 投票
1 回答
962 浏览

autotools - Libtool 慢,双重构建?

在我的项目中,为了整洁,模块被组织在子目录中。

我的项目目录层次结构:

配置.in:

生成文件.am:

生成文件.cvs:

src/Makefile.am

src/log/Makefile.am:

src/main.cpp:包含int main(){}src/log/log.cpp包含void f(){}

调用make产生(为简洁而编辑):

问题出在前三行:log.cpp 编译了两次!

问题:为什么不只编译一次——花费一半的时间?

注意:我不知道我在做什么——autotools 对我来说是黑魔法,但我们必须在我们的位置使用它。这些文档对我来说是不可理解的。

0 投票
2 回答
2221 浏览

autoconf - Automake 和同名文件

我有一个 C++ autoconf 托管项目,我正在调整它以在 FreeBSD 主机上编译。最初的系统是 Linux,所以我做了一个 AM_CONDITIONAL 来区分我正在构建的主机并将代码分成系统特定的文件。

配置.ac

生成文件.am

当我运行 automake 时,它​​会失败并显示以下消息:

即使在 Makefile.in 构建过程中,关于如何配置 automake 以尊重此条件的任何想法?

如果文件有不同的名称,我可以这样做,但它是 c++ 代码,我试图保持文件名与类名相同。

提前致谢!

0 投票
2 回答
2911 浏览

c - ld:重复符号_dbg_char

在 osx 上出现链接器错误(在 linux 或 fbsd 上相同代码没有错误):

错误中列出的 2 个库是我的,但符号不是。c++flint 确认 '_dbg_char' 在两个库中,但我不确定如何找到它的来源。

非常感谢如何识别 _dbg_char 的技巧、策略和直接答案。

项目正在使用 libtool/autotools 和 gcc 4.01

0 投票
4 回答
1689 浏览

msbuild - 为什么 autoconf/automake 项目会链接到已安装的库而不是本地开发库?

我正在创建一个libgdata包含一些测试和未安装程序的库。我遇到的问题是,一旦我安装了库一次,程序似乎链接到已安装的版本,而不是本地版本../src/libgdata.la

什么可能导致这种情况?我做错了什么可怕的事情吗?

这是我的test/Makefile.am样子:

libapiutil是另一个库,它有一些帮助处理 libcurl 和 libxml++ 的东西)

因此,例如,如果我在没有安装任何东西的情况下运行测试,一切正常。我可以在本地进行更改,它们会立即被这些程序拾取。

如果我安装该软件包,这些程序将编译(看起来它实际上确实在本地查找标头),但是一旦我运行该程序,它就会抱怨缺少符号。

据我所知,它基于 make 输出链接到新建的库(../src/libgdata.la),所以我不确定为什么会发生这种情况。如果我删除已安装的文件,对 src/* 的本地更改会被很好地拾取。

我在下面包含了 gdatacalendar 的 make 输出。

帮助。:)

更新

addCommonRequestHeader()当我在安装没有该方法的库之后将方法添加到 Service 类时,当我尝试运行日历程序时收到以下消息addCommonRequestHeader()

尤金尝试设置$LD_LIBRARY_PATH变量的建议没有帮助。

更新 2

我做了两个测试。首先,我在删除了我的 dev-install 目录(--prefix)之后这样做了,在这种情况下,它会创建test/.libs/lt-gdatacalendar. 但是,一旦我安装了库,它就会创建test/.libs/gdatacalendar。ldd 的输出对于两者都是相同的,但有一个例外:

什么会导致在一种情况下创建 lt-gdatacalendar 而在另一种情况下创建 gdatacalendar?

ldd 在 libgdata 上的输出是:

0 投票
1 回答
3718 浏览

macos - LTLIBRARIES:mv *.Tpo *.Plo,但前者不存在,后者已经存在

我正在将现有库(libtcod)直接转换为 Autotools(为了 OS X 的快乐)。不幸的是,当我将我Makefile.amlib_LIBRARIES规则切换到lib_LTLIBRARIES时,构建会从成功变为 un。摘自以下输出:

src/Makefile.am看起来像这样:

src/.deps包含:

我在这里犯了一个明显的错误,还是应该这样做?

0 投票
3 回答
118358 浏览

linux - libtool 的 .la 文件有什么用?

libtool 的.la文件有什么用?它们如何与共享对象一起使用?

0 投票
2 回答
2149 浏览

autotools - 使用 Autotools 预编译的头文件

是否可以在使用 automake / libtool 的项目中使用 gcc 预编译头文件?

添加新的 make 规则来构建预编译的头文件并不困难。问题是您还必须添加 libtool 和 AFAIK 引入的编译标志,它无法处理头输入文件。

你怎么能那样做?

0 投票
2 回答
724 浏览

autotools - libtool 被“make distclean”删除

我已将 libtool 复制到我的程序的源代码树中,以便与程序一起分发它。但是当我运行“make distclean”时,libtool 会与其余生成的文件一起被删除。我该如何阻止这种情况发生?

我尝试放入EXTRA_DIST = libtoolMakefile.am 但这不起作用。

这基本上是我的 configure.ac 的样子。