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

时间:2009-09-17 16:13:15

标签: mingw prefix msys

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

./configure --prefix=/mingw 
make
make install
到目前为止,

运行良好,但是在'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

首先,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,但我想知道是否有更好的解决方案。

非常感谢您的投入!

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分: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。