c++ - 如何链接到 libtool static la 库?

标签 c++ makefile libtool

我编译了this library成功地。它生成一个 libcds2.la 文件,我试图将其链接到我自己的项目中。我的所有文件(包括 .h 文件)都在与我的项目文件相同的目录中。当我尝试链接和使用所述库的功能时,使用:

g++ -o test -I/opt/include/ -L/opt/lib/ -lcds2 libcdsNoptrs.cpp util.cpp

回来了

./test: error while loading shared libraries: libcds2.so.2: 
      cannot open shared object file: No such file or directory

不管是什么。但关键是大多数时候它只是不识别库。我假设我在文件路径上做错了什么,但无法弄清楚。我的测试文件是一个 C++ 文件,包括 #include "libcds2/array.h" 并且所有内容都安装在 opt/lib, opt/include ,丑陋,我知道,但这就是 Makefile 生成的内容。

有什么指点吗?

最佳答案

libtool .la 是一个“元数据”文件。构建完 cds2 库后,预计 libtool 也将在“链接”模式下用于构建包的任何测试等。

通常,在您找到.la 文件的目录中,您会在 下找到.a.so >.libs 子目录。 .libs/libcds2.a 文件将在那里找到,前提是 configure 被赋予了 --enable-static 选项(或者它被启用默认情况下)。但是,我的理解是你已经在 /opt 中安装了这个包:

g++ -I/opt/include/ libcdsNoptrs.cpp util.cpp -o test /opt/lib/libcds2.a

否则,如果未安装 libcds2,只需提供路径:.../libcds2/lib/.libs/libcds2.a

除非你想在 --link 模式下使用 libtool 和 -static 来处理所有事情。但是学习 libtool 的优点通常是未雨绸缪:)

关于c++ - 如何链接到 libtool static la 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32059026/

相关文章:

c++ - 使用 libtool 链接非 libtool 库

c++ - 如何从文件中读取字符和整数?

C++ 网络程序运行但没有输出

c - Makefile 'ifeq'/'findstring' 看似不正确的字符串比较行为

c - 在使用 autotools 编译的项目上运行 valgrind 输出多个堆摘要

c - 如何使用 libtool 从一堆静态库中创建一个静态库

c++ - 从字符串中获取土耳其字符

c++ - 如何在 Win x64 上使用 WinAPI 正确安装虚拟打印机?

makefile - 如何从 Makefile 中的目标列表创建规则?

eclipse - 如何让 Eclipse 在自动生成 make 文件时清理特定文件