make install на MinGW / MSYS не нравится --prefix = / mingw - PullRequest
6 голосов
/ 17 сентября 2009

Я начал использовать MinGW / MSYS, пытаясь использовать некоторые библиотеки Linux в Windows. Использование

./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

Прежде всего, каково намерение make-файла? /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) и какой самый простой способ обойти это? Я мог бы вручную отредактировать make-файл, но мне интересно, есть ли лучшее решение для этого.

Большое спасибо за ваш вклад!

Ответы [ 2 ]

3 голосов
/ 16 июля 2011

Вы неправильно настроили свою сборку: *.so файлы для Linux, а не для Windows. Скорее всего, вам понадобится добавить опцию, например --host=i686-pc-mingw32, в ваш вызов configure.

1 голос
/ 16 июля 2011

В системах 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 для этого.

...