Я пытаюсь написать расширение для Ruby, и я успешно компилирую свой общий объектный файл nmatrix.so
весь день. Но затем, внезапно, он начинает производить nmatrix.bundle
вместо этого, без какого-либо файла .so
.
Это не дает мне никаких ошибок компоновщика, поэтому я не могу себе представить, почему это так. Я также ничего не изменил в моем Makefile
или extconf.rb
. Я последовательно использую Ruby 1.9.3p0 через rvm.
Я пытался сделать git stash save
с моей работой на день и скомпилировать что-то, что, как я знаю, должно работать без ошибок компоновщика (что-то, что привело к .so) ранее. К сожалению, это тоже создает файл .bundle
.
Очевидно, что я что-то сделал - возможно, что-то случайно установил - что изменило некоторые критические настройки GCC. Это вполне возможно, поскольку я провел большую часть дня, пытаясь собрать LAPACK и ATLAS, а также в какой-то момент установил homebrew.
Я обнаружил, что есть обходной путь. Я изменяю эти две строки:
DLLIB = $(TARGET).bundle
# ...
LDSHARED = $(CC) -dynamic -bundle
до
DLLIB = $(TARGET).so
# ...
LDSHARED = $(CC) -dynamic
И тогда библиотека компилируется и загружается правильно. Однако у меня нет ни малейшего изменения, которое я изменил в extconf.rb
(или где-либо еще), что заставило бы его автоматически сгенерировать этот Makefile с файлами .bundle
вместо .so
.
Вопрос: как именно я это вызвал и что мне делать, чтобы восстановить его?