首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何链接到库?

如何链接到库?
EN

Stack Overflow用户
提问于 2015-08-17 20:20:03
回答 1查看 2K关注 0票数 3

我已经成功地编译了这个图书馆。它生成一个libcds2.la文件,我正试图链接到我自己的项目。我将所有文件(包括.h文件)与我的项目文件放在同一个目录中。当我试图链接和使用上述库的函数时,使用:

代码语言:javascript
复制
g++ -o test -I/opt/include/ -L/opt/lib/ -lcds2 libcdsNoptrs.cpp util.cpp

带回来

代码语言:javascript
复制
./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/libopt/include中,我知道,但这就是生成的Makefile。

有什么指示吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-21 13:05:07

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

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

代码语言:javascript
复制
g++ -I/opt/include/ libcdsNoptrs.cpp util.cpp -o test /opt/lib/libcds2.a

否则,如果没有安装libcds2,只需提供到:.../libcds2/lib/.libs/libcds2.a的路径即可。

除非您希望在--link模式下与-static一起使用libtool来处理所有事情。但是学习libtool的优点通常是一项未雨绸缪的练习:)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32059026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档