4

我正在libsndfile从当前的开发树中构建一个用于 Windows 的共享库。该库依赖于其他 3 个libogglibflaclibvorbis.

所以我构建了它们,但在编译期间禁用了动态库的生成,因为我只想拥有libsndfile一个动态库,然后其他程序将使用它,这就是提供官方库的方式。

但是,即使编译libsndfile按预期进行,我也无法生成动态库,除非有上述库的动态版本。Libtool 会生成如下警告:

*** Warning: linker path does not have real file for library -lFLAC.
*** I have the capability to make that library automatically link in when
*** you link to this library.  But I can only do this if you have a
*** shared version of the library, which you do not appear to have
*** because I did check the linker path looking for a file starting
*** with libFLAC and none of the candidates passed a file format test
*** using a file magic. Last file checked: /usr/x86_64-w64-mingw32/lib/libFLAC.a

最后:

*** Since this library must not contain undefined symbols,
*** because either the platform does not support them or
*** it was explicitly requested with -no-undefined,
*** libtool will only create a static version of it.

我想知道是否有任何方法可以让 libtool 也使用这些静态库来构建动态库libsndfile。看到 libtool 实际上是一个脚本,是否可以对其进行修改以完成所需的行为?

我目前正在使用 64 位 Windows 的交叉编译器在 Linux 中构建所有内容;但我认为在为 Windows 或 Linux 本地构建时也会发生同样的情况。

4

0 回答 0