问题标签 [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 投票
1 回答
130 浏览

c++ - 在共享对象中命名不兼容的符号 - 在哪里寻找问题

我是 Linux 新手。我可以访问两台 Linux 机器,一台 40 核服务器(A)和一个集群(B)。我试图在两台机器上做同样的事情,它在 A 上工作,在 B 上不起作用。我对这两个机器都没有 sudo 权限。A 在 debian 挤压/sid 上运行。B 在内核 2.6.18-238.el5 上运行。我在 /etc 下找不到任何发布信息文件。A 具有 gcc 4.6.2,而 B 具有 gcc 4.1.2。

我在两台机器上本地编译并安装了一个给定的网格划分软件 Pkg1 和 Pkg2,一个给定的求解器。两者都需要 Libtool 和 automake。Pkg2 是一个 .so 文件。一切正常,我可以运行示例。代码是用 mpicxx 构建的。两者都有不同的 mpi 编译器。A 使用 openmpi154,B 使用 qlogicmpi_gnu-0.1.0。

现在我介绍我的代码,比如 Pkg3,一些 .cpp 文件。我用它构建了一个.so。我没有使用 Libtool 和 automake。使用了一个简单的 make 文件,使用 gcc 作为编译器和链接器(也尝试过 mpicxx)。

在 A 上,Pkg3 运行良好。在 B 上,Pkg3 崩溃。当它尝试将 Pkg3 中的某些类型动态地转换为 Pkg2 中定义的类型并带有消息 St8bad_cast 时,它会崩溃。对于另一个数据文件,当 Pkg2 中的函数尝试从 Pkg3 转换类型时,它崩溃,消息“元素类型为 N5ngfem8FE_Segm2E 预期类型为 N5ngfem19ScalarFiniteElementILi1EEE”

我在哪里寻找问题?抱歉含糊其辞。这里的所有软件都是开源的,但是软件包太大而无法用很少的工作制作一个独立的复制品。我既没有使用过 automake 和 Libtools,也没有使用过 mpi,这使问题更加复杂。我查看了 Pkg1 和 Pkg2 的 makefile 并尝试用我的简单 makefile 映射 CXX、LDFLAGS 等,但是 automake/libtools 创建的多个间接使得它变得困难。

我了解 Pkg2 中的符号在符号表中的处理方式与 Pkg3 中的不同。但这应该已经处理了链接器?!我已经尝试过为 Pkg3 使用和不使用“-Wl,-E”选项。-fPIC 始终存在。链接 Pkg3 的规则指向库 Pkg2 ()。我已经发布了 Pkg3 的 makefile 的正文。

注1:

Pkg2的./configure命令有-Wl,--start-group -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -Wl,--end-group -lpthread ie,它没有 -E 标志。但这就是它被指定给我的方式,作为参考。

笔记2:

链接规则中定义的路径 -L/home/lv70227/elan/ng/lib 有 pkg​​2.so.0.0.0,两个符号链接指向它,以及 pkg2.la,而不是 pkg2.sa,因为它是由库工具。

任何关于问题可能出在哪里的提示都值得赞赏。我在两台机器上都遵循了相同的程序,使偏差最小以适应安装在 A 和 B 中的不同 mpi、gcc、mkl 库。

谢谢你,伊兰。

0 投票
2 回答
128 浏览

autotools - 使用 automake 处理库的可选公共类型/函数的正确方法是什么?

在我维护的库中,有一些函数依赖于 pthread。该项目使用自动制作。我想创建一个配置选项来禁用对 pthreads 的依赖,它不应该编译这些函数。(原因是某些交叉编译和嵌入式目标。)

到目前为止,避免编译包含这些函数的文件还可以,但现在我意识到这些函数和它们使用的一个结构是在公共头文件中定义的。

  1. 从图书馆维护的角度来看,这里的正确方法是什么?
  2. 在公共标头中使类型或函数可选的正确方法是什么?

最初,我认为我应该将标头转换为 autoconf 输入 (.in) 文件,并生成标头,并选择删除这些函数和类型。

但是,如果系统可能同时安装了不同版本的库呢?通常这些应该能够共享标头。

我是否应该使标头有条件地使用预处理器来避免这些功能,并将pkg-config其指定为命令行选项?

另一个想法是将这些函数和类型移动到它们自己的头文件中,并避免在禁用 pthread 时安装此头文件。这意味着稍微弄乱标题的组织,但也许是最好的主意。不过,我想听听您的意见,在库的公共标头中处理可选功能的最佳方法是什么?

0 投票
3 回答
2906 浏览

c++ - 如果 lt_dlopen 失败,如何获取更多信息?

我正在调用lt_dlopen并得到一个通用文件未找到错误(翻译的 errno 文本)。我怎样才能获得有关实际失败的更多信息,因为该文件肯定存在。

这是一个加载 C++ 库的 C++ 程序。在同一个程序的其他地方,我使用相同的命令毫无问题地打开其他库,因此我担心它可能是这个库特有的东西。我已经使用ldd并满足了库的所有这些依赖项。

0 投票
1 回答
742 浏览

linker - 在 libtool 命令行上重复库

我正在使用 automake,并获得这样的 libtool 调用:

请注意,这些库(我无法控制)具有循环依赖关系,需要多次提及它们。不幸的是,似乎 libtool 将对库的多个请求折叠成一个请求,并且它运行:

请注意,对库的第二次遍历已经消失;我收到一堆链接器错误。当我手动运行带有额外-l标志的 gcc 命令行时,它可以工作。

如何让 libtool 将我请求的所有库传递给 gcc?

0 投票
1 回答
287 浏览

gcc - 如何为 Heroku 静态编译 gerbv

我正在尝试编译gerbv 2.6,以便我可以将它包含在我的 Heroku bin 目录中,但我似乎无法弄清楚。我尝试了以下各种组合:

但跑步后make我总是得到:

我的想法不多了。有人有吗?

0 投票
1 回答
5959 浏览

c++ - Libtool 版本不匹配

我已经下载了一些旧项目的源代码。我现在正在尝试构建它:

它工作正常,但是:

ps那个小项目页面:http: //sourceforge.net/projects/rccparser/

有什么帮助吗?

0 投票
1 回答
3647 浏览

gcc - Ubuntu上pcre-8.30的编译错误

尝试在 Ubuntu 10.04 上编译 pcre-8.30.tar.gz 时遇到错误,不知道发生了什么。

我阅读了 Makefile 并找到了以下行:

其中 $(DEFS) 是“-DHAVE_CONFIG_H”选项。我想这是 gcc 的一个选项,而不是 libtool 的选项,对吧?

似乎错误就在这里,但是如何解决呢?

0 投票
3 回答
14049 浏览

makefile - Installing glib in non-standard prefix fails

I'm trying to install glib in a non-standard prefix but I get the following when running make install:

Any reason why I have to install gthread only in a prefix ending with /usr/local/lib?

0 投票
2 回答
600 浏览

bash - 这个 bash 代码在做什么?

这是我在一个开源项目(不在该系统上编译)中名为 libtool 的文件中找到的一些代码:

我得到了案例陈述,但我不确定第一optarg=...行。它想达到什么目的?对于这个测试用例,让:

在 OS X 中运行它让我:

我认为它可能试图将“arm-elf-gcc”分配给变量 optarg,但我不确定。该软件在 Ubuntu 中整体编译正确,但 libtool 文件看起来非常不同。

0 投票
1 回答
2058 浏览

shared-libraries - GNU/Libtool 交叉编译

我有一个非常基本的问题GNU/Libtool。我的项目是由构建GNU/autotools并包含由构建的共享对象GNU/Libtool。我想i386在机器上编译共享对象x86-64,所以我这样做:

配置脚本告诉我不支持共享库,make命令失败。如何解决这个交叉编译问题?

我应该在Libtool 手册中找到答案吗?