6

我已经开始使用 MinGW/MSYS 来尝试在 Windows 上使用一些 Linux 库。使用

./configure --prefix=/mingw 
make
make install

到目前为止运行良好,但我有两个不同的库在 'make install' 和 'ln -s' 调用上失败。它是这样的:

rm -f /mingw/lib/libvamp-sdk.so.2
ln -s libvamp-sdk.so.2.0.0 /mingw/lib/libvamp-sdk.so.2
ln: creating symbolic link `/mingw/lib/libvamp-sdk.so.2' to `libvamp-sdk.so.2.0.0': No such file or directory
make: *** [install] Error 1

首先,makefile 的用意是什么?/mingw/lib/libvamp-sdk.so.2.0.0 存在,因此将上面的“ln -s”调用替换为

ln -s /mingw/lib/libvamp-sdk.so.2.0.0 /mingw/lib/libvamp-sdk.so.2

会起作用,但我不确定这是否是作者的意图。

更重要的是,为什么会发生这种情况(我猜它在本机 Linux 系统上运行良好)以及解决它的最简单方法是什么?我可以手动编辑makefile,但我想知道是否有更好的解决方案。

非常感谢您的意见!

4

2 回答 2

3

您错误地配置了您的构建:*.so文件适用于 Linux,而不是 Windows。您很可能需要在--host=i686-pc-mingw32您的配置调用中添加一个选项。

于 2011-07-16T09:41:31.903 回答
1

在 linux 系统上,未修改的

ln -s libvamp-sdk.so.2.0.0 /mingw/lib/libvamp-sdk.so.2

创建一个相对符号链接以使 libvamp-sdk.so.2.0.0 可用于链接到库的早期或以后实例的程序。但是,这仅在构建基于 .so 的系统时才有意义。

对于 mingw 构建,这些行根本是不必要的,因为您构建 DLL 而不是共享库,并且机制不同。这两行可以安全地从 Makefile 中删除,只需确保安装了 DLL 和库(libfoo.a和 libfoo.dll.a),前者在 /mingw/bin 中,后者在 /mingw/lib 中。您可能需要为此修改 Makefile。

于 2011-07-16T09:20:48.360 回答