如何使用 pkglib_LTLIBRARIES = test.la 仅构建 *.so
我正在使用自动工具来构建共享对象。
在我的 Makefile.am 中使用 pkglib_LTLIBRARIES
会导致构建 libtest.la
和 libtest.so
。
我只希望它构建/安装libtest.so
。
这可能吗?
I'm using autotools to build a shared object.
Using pkglib_LTLIBRARIES
in my Makefile.am causes a libtest.la
AND libtest.so
to be built.
I only want it to build/install libtest.so
.
Is this possible?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
生成库的细节因平台而异。 例如,在 OS X 上,您的库将被称为 libtest.dylib 而不是 libtest.so。 libtool 是 autotools 套件的一部分,它的工作是抽象出所有混乱的平台相关细节。 为此,它创建了一个高级的、独立于平台的库描述。 这是您看到的 libtest.la 文件。 libtools 使用该库的平台独立描述来组合最终的本机库。
如果您使用自动工具,我认为您将无法避免生成 libtest.la。 我想您可以破解本地 libtool shell 脚本以在完成时将其删除,但您只需在下次运行 make 时再次生成它。
我发现 关于 libtool 的 GNU 文档 有点不透明。 这是一个不那么不透明但有点过时的描述。
The details of generating libraries varies widely from platform to platform. For example, on OS X, your library would be called libtest.dylib rather then libtest.so. libtool is part of the autotools suite, and its job is to abstract away all the messy platform dependent details. To do this, it creates a high-level, platform independent description of the library. This is is the libtest.la file you are seeing. libtools uses this platform independent description of the library to put together the final native library.
If you are using the autotools I don't think you are going to be able to avoid generating libtest.la. I suppose you could hack your local libtool shell script to remove it at completion, but you'd just have to generate it again the next time you ran make.
I found the GNU documentation on libtool somewhat opaque. Here is a less opaque but kind of dated description.
您可以将
--disable-static
作为选项传递给configure
。You can pass
--disable-static
as an option toconfigure
.另一种选择是在
configure.ac
中进行设置:请参阅 有关 LT_INIT 的文档。
Another option would be setting this in
configure.ac
:See documentation on LT_INIT.