问题标签 [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.
c++ - 如何使用 libtool 创建二进制文件和 .so
我有一组 cpp 文件,我想直接编译成二进制文件并编译成共享库。
我有
当我运行它时,cpp 文件被编译两次,一次使用 libtool,一次没有,有时 libtool/automake 会抱怨
我尝试将 COMMON_SOURCES 放入 .a 文件中,但是当我将 .a 与 .la 链接时 libtool 会抱怨(说它不可移植)。
我需要的是类似
但那不存在
编辑:澄清 - 我正在使用 automake/autoconf。我上面展示的是我的 automake Makefile.am
makefile - 使用 libltdl 扩展递归 make
在我的 Makefile.am 中,我有
这是因为我希望能够使用包含在我的包中的 libltdl 版本(即./configure --with-included-ltdl
)。但是,我偶尔会遇到 make 永远递归调用自身的问题。不幸的是,我不确定究竟是什么条件导致这种情况发生。
这通常通过重新运行 autoconf 和 configure 来解决。我想知道这样做的“正确”方式,因为似乎不是这样。(我还发现在更新 configure.ac 后我必须运行autoreconf && autoreconf libltdl
而不是仅仅运行autoreconf
)
谢谢您的帮助!
linux - 如何获得完整的链接命令而不仅仅是 CCLD / 如何在 make 文件中禁用静默规则
我目前正在构建一个应用程序并在链接中出错,这是一个命令,
现在我想查看完整的链接命令,感谢您的帮助。
PS。
我正在使用带有 c++ 编程语言的 GNU 构建系统和 Ubuntu 10.04。
c++ - 无法识别 libtool 和 autoconf 的 LT_VERSION
我的 configure.in 文件有LT_VERSION="1.1"。我正在使用最新版本的 autoconf 和 libtool。在使用 autoconf 或 autoreconf 时,我收到以下错误消息:
我能做些什么?
gtk - Libtool 认为“图书馆已被移动”,但事实并非如此
我目前正在从源代码重新编译 gtk+ 和依赖项(我没有其他选择)。
我所有的自定义包都安装在一个特定的自定义点(我们称之为/packages
)(这看起来很奇怪,但这一次,我别无选择)。
当我尝试重新编译 pango 时,它需要 freetype。Freetype 已经安装在/packages/freetype/2.1.10/amd64-linux
(lib, include ... are in this directory) 并且设置了不同的配置路径 ( LD_LIBRARY_PATH
, LIBRARY_PATH
, CPLUS_INCLUDE_PATH
, INCLUDE_PATH
, PKG_CONFIG_PATH
)。pango 的配置运行良好。它找到freetype并生成Makefile。当我尝试制作时,出现以下错误:
libtool我的lib有问题(但libfreetype.la存在于目录/packages/freetype/2.1.10/amd64-linux//lib/
中,访问没有问题)。所以 libtool 尝试在“经典地方”中找到它,/usr/...
而不是找到它。
一开始,我认为 libtool 与两个斜杠混淆(可能是由于编译 freetype 期间 --prefix 标志中的错误),所以我确实重新编译了 freetype 没有拼写错误,但它没有改变任何东西。
有没有人有帮助我的想法?我以前从未在我的个人项目中使用过 libtool,所以我不知道是否有办法解决这种奇怪的行为......(这可能无关紧要,但 libtool 是 1.5.22 版)
提前致谢。
libtool - 当文件位于正确路径时,dlopen 失败,找不到文件
我有一个使用 libtool 构建的库,它安装到包的库目录中,/usr/local/lib/myprog/libmylib.so
. 我正在使用 libltdl 在我的代码中动态加载库。当我尝试在一台机器上加载这个库时,它工作得很好。另一方面,使用相同的构建和安装在同一位置的库,我收到“找不到文件”错误。
如果我lt_dlforeachfile
之前直接调用lt_dlopenext
(我用它来加载库),那么我可以通过打印出文件名来查看我需要的库已在搜索路径中找到。但紧接着,加载它失败并出现“找不到文件”错误。有什么建议么?
更新
我尝试切换到使用dlopen
并明确指定库的绝对路径。这仍然适用于某些系统,而不适用于其他系统。
c++ - 链接 libresolv 时未定义的引用
我有一个项目,它是一个链接 libresolv 的库,它在最近的发行版上运行良好:Ubuntu 10.x Fedora 13、Mandriva 2010.1 但在 Centos 5.x 上出现以下错误
安装的glibc是:glibc-2.5-18.el5_1.1
library.la 文件包含:
您可以阅读 configure.ac
提前致谢
autotools - 当我的包仅在 C 中构建时,如何告诉 autoconf 不要探测 fortran、C++ 等?
这一直困扰着我多年,但我一直忽略它,就像我怀疑其他人一样。
在我的 configure.ac 文件中使用上述内容,configure 会去为我找到一个 C 编译器,但它会继续:
这并没有真正伤害任何东西,它只是增加了视觉噪音,使运行时间更长——再说一遍,这并不重要,但多年来一直困扰着我。
我尝试过使用 --with-tags=C, AC_LANG([C]) 和其他一些带有 shell 变量的技巧(绝对感觉是错误的方式......),看看我是否可以关闭它。
有谁知道仅对 C 进行配置探测的 autoconf/automake/libtool 有福的方式?
shared-libraries - 使用 GNU libtool 创建静态库和共享库?
我正在为我的项目使用 GNU 自动工具(包括 automake!)。我想知道是否可以使用 libtool 创建静态库和共享库?或者声明是分开的?这会:
工作?
autotools - 如何在 libtool/autotools 项目中切换共享库输出和可执行输出?
我有一些自动工具管理的项目。除了源代码文件,它还有 autogen.sh、configure.ac、Makefile.am、src/Makefile.am。
如果它是库或应用程序,如何查看这些文件?例如,在 Qt 中,我有“TEMPLATE = app”或“TEMPLATE = lib”来决定这一点。自动工具中有什么?
如何从生成可执行应用程序切换到生成库并返回?