Я пытаюсь написать расширение 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
.
Вопрос в том, как именно я это вызвал, и что мне делать, чтобы это восстановить?