问题标签 [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.
makefile - 由于未找到 .lo 文件而导致不必要的重建
有没有人见过这样的东西:
在使用 autotools 的项目中运行 make 时,它总是重新构建一切。使用 make -d 运行,表明 make 会查找 foo.lo 文件,并且因为找不到它们,所以总是重新编译 foo.c。
它似乎与 builddir != srcdir 有关。.lo 文件当然在 builddir 中。但显然 make 或 libtool 正在其他地方期待它们:
调试输出看起来像这样:
先决条件/path/to/srcdir/foo.h' is older than target
foo.lo'。/path/to/builddir/.deps/foo.Plo:1 必须重新制作目标“foo.lo”。
更新似乎问题是由 AC_PROG_LIBTOOL 引起的。根据文档,它希望将一个名为 top_builddir 的变量设置为构建目录。设置它的标准方法是什么?是否有用于此的 autoconf 宏?
c++ - Libtool 仅创建静态库 - 我需要共享对象
我有几个 C++ 类,我想使用 autotools 和 libtool 将它们编译成一个共享库。这些是我的 configure.ac 和 Makefile.am 文件:
配置.ac:
生成文件.am:
Libtool 只创建静态库,尽管我调用 configure --disable-static --enable-shared 来明确指示脚本创建共享对象。我的文件有什么问题?
- - 编辑 - -
来自 libtool 的链接 cmd:
gcc - 编译 MPC-0.8.1
按照此处发布的说明:http://stackoverflow.com/questions/9450394/how-to-install-gcc-from-scratch-with-gmp-mpfr-mpc-elf
我安装了 GMP、MPFR 和 ELF 就好了,但是在安装 MPC 时
我收到以下错误:
任何想法如何解决它?它似乎在错误的目录中查找。
编辑:按照 Jon 链接的说明进行操作后,3 小时后出错
make[5]: * [gnu/java/nio/charset.lo] 错误 1 make[5]: 离开目录/apps/ddechev/gcc47/x86_64-unknown-linux-gnu/32/libjava'
make[4]: *** [all-recursive] Error 1
make[4]: Leaving directory
/apps/ddechev/gcc47/x86_64-unknown-linux-gnu/32/libjava' make[3]: * [multi-do] 错误 1 make[3]: 离开目录/apps/ddechev/gcc47/x86_64-unknown-linux-gnu/libjava'
make[2]: *** [all-multi] Error 2
make[2]: Leaving directory
/apps/ddechev/gcc47/x86_64-unknown-linux-gnu/libjava' make[1]: * [all-target-libjava] 错误 2 make[1 ]: 离开目录
知道为什么吗?
doxygen - 使用 autotools 生成(和安装)doxygen 文档
我正在编写一个库(使用 libtools),其中所有 API 文档都是使用 doxygen 完成的。
我想知道是否有一种简单的方法可以将生成的 doxygen 文档的安装集成到 autotools 中。
我认为构建文档应该很容易。但是一旦我运行了 doxygen,将生成的(例如).html 文件放入 $(htmldir) 的正确方法是什么?
问题似乎是我不知道(我也不想知道)doxygen 将为我创建哪些文件,所以我不能真正将它们全部枚举到 html_DATA
我认为像 'html_DATA=html/*.*' 这样的东西是个坏主意
static - 使用 Libtool 强制将静态库链接到共享库
我有一个使用 libtool编译成两个对象的库 ( libfoo ) :libfoo.a 和 libfoo.so。
我还必须使用 libtool创建另一个库 ( libbar ),它将是一个包含所有 libfoo 代码的共享库 (libbar.so)。
为了做到这一点,我必须强制libbar链接到libfoo.a,而不是 libfoo.so。
我在一个自动工具环境中,所以我必须使用标准的configure.in或Makefile.am规则来解决这个问题。
我尝试了几件事,例如在 configure.in :
这总是导致链接行上的 -Wl 标志;但是 -lfoo 已经消失并且在它的开头被放置在绝对路径形式( /opt/foo/lib/libfoo.so )中。
我也试过:
或在 Makefile.am 中:
和
等等等等(有很多很多变种!)
但我认为我绝对没有足够的 Autotools/Libtool 知识来单独解决这个问题。我一直无法在网上找到有关它的信息,总是略有不同的问题。
linux - 为什么我必须使用 libtool --mode==execute gdb wireshark 才能调试wireshark
我试图查看 Wireshark 的源代码以了解协议分析,但我发现当我只是使用gdb ./wireshark
时,当我按Ctrl+C并设置断点,然后键入C时,进程就死了。我想知道 libtool 做了什么来使 GDB 调试成为可能。
我已经读过它说 libtool 是一种工具,可以通过简单的界面man libtool
轻松使用各种工具,但我不知道使用 libtool 的关键是什么。.a
.o
gdb wireshark
c++ - Libtool 没有安装子项目
我正在使用 C++ 开发一个项目,我希望在该项目中实现添加插件的能力。编译过程由 Autotools 处理。我已经设法将文件结构设置正确,并且编译了主项目和插件,但由于某种原因,运行时省略了插件make install
。单独编译和安装插件时,它工作正常。我在这里遗漏了什么,或者为什么没有从顶部文件夹安装插件?
配置.ac
生成文件.am
插件/defaultReport/configure.ac
插件/defaultReport/Makefile.am
linux - 我的 lib_LTLIBRARIES 库链接,但 check_LTLIBRARIES 一个没有?
我有一个用 autoconf、automake 和 libtool 构建的新 c++ 项目。功能分为支持库和用户二进制文件。还有一组unittests
链接到这些库的二进制文件,它们是make check
按时构建和运行的,但没有安装。
我说这个项目是新的。实际上,我现在才开始提取应该安装的第一个库。到目前为止,(少量)编写的代码只是直接编译成unittests
.
我尝试的Makefile.am
片段如下所示:
在make check
中,我得到了这个:
请注意,缺少的库正是我要编译的库。
(该库不是libfoo
,但我可以使用这个存根库重现相同的错误。Makefile.am
上面的和错误行是文字和未经编辑的。)
如果我将 automake 行更改为
那么编译看起来像这样:
..一切正常(除了我的库没有安装,在check_
。)
请注意,命令行中的唯一区别是第二个中的一些附加参数:
... -Wl,-rpath /usr/local/lib -o libfoo.la -rpath /usr/local/lib foo.lo -lboost_thread-mt ...
我不知道这个新论点是否不应该存在,但它似乎确实导致了问题。有谁知道我错过了什么?
更多细节:
- 在 osx lion 上,这可以正常工作(并且命令行不同。)此错误出现在 ubuntu 12.04 上,可能是其他 linux。
noinst_LTLIBRARIES
并且EXTRA_LTLIBRARIES
像这样工作check_LTLIBRARIES
:没有额外的参数,并且它链接。似乎 libtool 'convenience' 库特别是那些没有这些论点的库。- 汽车制造 1.11.1
- 自动配置 2.68
- 库工具 2.4
编辑
-Wl,-rpath /usr/local/lib
(手动)从参数中删除也可以解决问题。
build - 为什么 Libtool 不想与静态库链接?
我想使用 GNU Autotools 构建一个使用 ZipArchive 的共享库,但我遇到了这个问题:
如果我构建一个静态库或者如果我使用 ZipArchive 的共享库,它可以工作,但问题是 ZipArchive 源代码附带的 makefile 只构建一个静态库。
如何强制 Libtool 与静态库链接?
autotools - libtool automake:LIBADD 因静态链接而损坏?
我有一个aa
依赖于libbb
哪个依赖的程序libcc
。
在 libb 的 Makefile.am 我添加了
在aa的Makefile中我添加了
这在默认情况下非常有效。
但是我需要静态链接,所以我使用--disable-shared
.
不幸的是,在编译时aa
我得到了:
libb_source.c:对 libcc_symbol 的未定义引用
任何想法缺少什么?
更新:如果您正在交叉编译并使用 stagingdir,请不要考虑指定这样的依赖项。