我如何 link 对抗 libtool static la 库?
How do I link against libtool static la library?
我this library编译成功了。它生成一个 libcds2.la
文件,我正试图将其 link 到我自己的项目中。我的所有文件(包括 .h
文件)都在与我的项目文件相同的目录中。当我尝试 link 并使用所述库的功能时,使用:
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
不管那是什么。但关键是大多数时候它只是不识别库。我假设我在文件路径上做错了什么,但无法弄清楚。我的测试文件是一个包含 #include "libcds2/array.h"
的 C++ 文件,所有内容都安装在 opt/lib
、opt/include
中,丑陋,我知道,但这就是 Makefile 生成的内容。
有什么指点吗?
libtool .la
是一个 'meta data' 文件。构建 cds2
库后,预计 libtool 也将在 'link' 模式下用于构建包的任何测试等
通常,在您找到 .la
文件的目录中,您会在 .libs
子目录下找到 .a
和 .so
。 .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的优点通常是未雨绸缪:)
我this library编译成功了。它生成一个 libcds2.la
文件,我正试图将其 link 到我自己的项目中。我的所有文件(包括 .h
文件)都在与我的项目文件相同的目录中。当我尝试 link 并使用所述库的功能时,使用:
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
不管那是什么。但关键是大多数时候它只是不识别库。我假设我在文件路径上做错了什么,但无法弄清楚。我的测试文件是一个包含 #include "libcds2/array.h"
的 C++ 文件,所有内容都安装在 opt/lib
、opt/include
中,丑陋,我知道,但这就是 Makefile 生成的内容。
有什么指点吗?
libtool .la
是一个 'meta data' 文件。构建 cds2
库后,预计 libtool 也将在 'link' 模式下用于构建包的任何测试等
通常,在您找到 .la
文件的目录中,您会在 .libs
子目录下找到 .a
和 .so
。 .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的优点通常是未雨绸缪:)