问题标签 [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.
autotools - Autotools:应该将 config.guess、depcomp 或 ltmain.sh 存储在 SVN 存储库中吗?
我正在接管一个项目,我在 subversion 存储库中看到一些属于 libtool 和 automake 分发的文件,例如 config.guess、depcomp 或 ltmain.sh。我相信这完全是错误的,因为当我结帐时,我应该在我的机器上安装 autotools 并执行 autoreconf。
你怎么看 ?我错过了将这些文件放在存储库中的意义吗?
autotools - 如何学习使用 autotools/libtool?(有人不喜欢吗?)
当某个项目拥有所有“ltmain”、“aclocal.m4”和其他“autogen.sh”时,它会带来不适:
./autogen.sh
是缓慢的。./configure
是缓慢的。./configure
失败抱怨错过了一些东西。我修复它,它抱怨接下来的事情。慢。- Makefile 很大。配置脚本很大。Even
configure.ac
通常是大而难以理解的。 - Makefile.am 和 configure.ac 充满了大部分神秘的变量。它是如何推导出规则的?
- 我突然意识到我只复制了 libtool 的 shell 脚本存根,而实际的二进制文件在
.deps
或.libs
或其他什么地方。 - 一般来说,如果那里有什么东西坏了,我会不确定该怎么做,而且错误消息通常会让人困惑。
- 最后,即使是小型项目,当它有 autotool 的配置脚本时(当源代码在存档中可以是 5kb 时)时,存档中至少有 50kb。
它的每一个问题都为 {auto,lib} 工具增加了越来越多的仇恨点。
怎么和那些事情相处得很好?是否有一个简短的教程(不是冗长的“GNU 构建系统介绍”或它的名称)以及如何创建、修复和调试这些东西的综合参考?
macos - 如何在 Instruments.app 中运行 libtool 可执行文件
我想检查我的 os x 可执行文件是否存在内存泄漏。我希望为此使用 Instruments.app。但我不知道如何在 libtool 创建的包装器中执行它(添加库路径等)。我可以对 Instruments 目标使用 glibtool --mode=execute myapp 之类的东西吗?像在 libtool 脚本上启动 gdb 之类的?
c++ - Bluegene 系统是否支持 ltdl 或任何其他类型的 dlopen() 支持?
所以我有一些dlopen
用于加载库的代码,我希望它在 bluegene 系统上工作,但我没有 bluegene 来测试东西,而且我从来没有直接使用过。bluegene 支持ltdl.h
,还是使用其他东西?如果是这样,它有什么用?
c - autoconf 仅在必要时设置 -fPIC
我正在使用我想为 Linux 和 Windows 编译的 autoconf/libtool 编写一个共享库(使用 mingw 交叉编译器)。对于 Linux(可能还有其他支持它的平台),我需要设置 -fPIC。所以我把它放到 Makefile.am 中的 CFLAGS 中。但是当我用 mingw 交叉编译它时,gcc 会发出警告:
所以显然 Windows 代码不需要这个选项。这只是一个警告,但无论如何我都想摆脱它。我怎样才能做到这一点?也许已经有一个 libtool/autoconf 功能可以检查该选项是否受支持,并且只在需要时设置它,所以我不必在 Makefile.am 中手动执行此操作?
file - 如果多个目录中存在具有相同文件名的源,如何使用 libtool 创建库
我正在尝试使用 libtool 编译一个库。问题是我在几个目录中有几个具有相同文件名的源文件。因此,在 autoreconf 期间,libtoolize 会向我抛出错误。
基本上,我的文件系统布局如下:
Makefile.am
放置在 src/ 目录中,并由主 Makefile.am使用SUBDIRS = src
. 内容类似于以下内容:
但是,在执行 autoreconf 时,出现错误:
如何解决?我认为我必须将 Makefile.am 添加到每个子目录中。如何做到这一点?谷歌没有帮助找到解决方案。
python - libtool python模块链接及安装
我使用自动工具处理一个用 C 编写的项目,该项目生成一个静态库。我还在同一项目的上下文中为 C API 提供 Python 接口。直到最近我才获得在项目中引入 libtool 的许可,以便能够以可移植的方式提供静态和动态库。到目前为止,我会使用 distutils 生成 Python 共享模块,并将 python 模块链接到项目的 C 静态库。同样,那是因为我不被允许将 libtool/shared 库引入到 ecuation 中。现在我想把libtool放进去,我面临以下两个有问题的场景:
如果我继续使用 distutils 生成 Python 共享模块,因为 distutils 和 autotools 不相互通信,我需要告诉 distutils 要链接到哪个 C 库。到目前为止,除了解析 .la 文件以获取 libtool 能够生成的库的名称和路径之外,我想不出任何方法。libtool 是否提供有关它能够在系统上生成什么类型的库的任何信息?
如果我将 Python 模块生产移动到 automake,那很好,直到我进入安装过程。我不知道如何告诉 libtool 我想要我的 Python 模块,而不是 lib 文件夹,即“lib/python2.5/site-packages/myproject”。我试图只复制 Makefile 中的库,但是由于库的 rpath 错误(构建的路径而不是安装的路径),因此无法正常工作。为什么我要它在那里?因为我也有 .py 包装器。那么,有没有办法告诉 libtool 将我的模块安装在其他地方并正确设置 rpath ?
我想我只是在寻找一个优雅的解决方案,或者解决方案就在那里而且很简单,但我看不到它,因为我没有足够的经验。有什么帮助吗?
PS 如果我能让它工作,我更喜欢选项 2,因为这样我就不必将信息从 autotools 传递到 distutils。
c++ - automake+libtool+c++ = 非常臃肿的界面
首先我有“include_HEADERS = 'my public headers'”和“libfoobar_la_SOURCES = 'private sources' 'private headers'”。一切皆好。它编译/安装/链接。但是当我执行“nm -C my_instaed_lib.so”时,我得到:
这从未在任何标题中声明。
这是私下未安装的标头。
我读了两次 automake/libtool 手册,但我不知道如何从界面中去除这些废话?或者什么可以将这些废话暴露给公共 api。如何控制导出到公共 api 的内容?
redhat - 构建程序后是否会使用 libtool?
我开始构建 xmlsec 并注意到它无法识别我计算机上的 libltdl 库。我开始寻找,结果发现符号链接 libltld.so -> libltdl.so.3 不见了!
我使用的发行版是“Red Hat Enterprise Linux Server release 5.5 (Tikanga)”
我心想……也许这是一个错误?但是哪里?在 gcc、redhat、xmlsec 中。查看 redhat “https://bugzilla.redhat.com/show_bug.cgi?id=469718” 的错误报告,我注意到已经提出投诉并且响应是:
“这不是错误,/usr/lib/libltdl.so 由 libtool-ltdl-devel 提供,因为它仅在编译期间需要。”
所以问题是:在标准的“./configure & make”过程之后是否会使用 libtool?Redhat说 libltdl“只在编译期间需要”是什么意思?但标准的 libtool 不是吗?
谢谢,陈兹
autoconf - Autoconf、Libtool 共享和静态库
我正在使用 autoconf gnu 工具来构建我的产品。它为提到 *.la 的任何库生成共享库和静态库。问题是如果您使用 .la 来链接 Makefile.am 中的二进制文件。它与动态库链接,但是当您对二进制文件使用 ldd 时,它会显示“不是动态可执行文件”,尽管它与共享库链接。我通过在构建二进制文件后删除共享库然后尝试运行二进制文件来证明这一点。它没有找到共享库并且无法运行。另一个问题是如何使用 Makefile.am 方向将库放在指定位置?