在MinGW/MSYS上安装make不喜欢--prefix =/mingw

6 mingw prefix msys

我已经开始使用MinGW/MSYS试图在Windows上使用一些Linux库.运用

./configure --prefix=/mingw 
make
make install
Run Code Online (Sandbox Code Playgroud)

到目前为止一直运作良好,但我在'ln -s'调用''make install'时有两个不同的库失败.它是这样的:

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
Run Code Online (Sandbox Code Playgroud)

首先,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
Run Code Online (Sandbox Code Playgroud)

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

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

非常感谢您的投入!

thi*_*ton 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。