Как мне убедить LibTools сгенерировать библиотеку, идентичную тому, что gcc делает автоматически?
Это работает, если я делаю что-то явно:
gcc -o libclique.dylib -shared disc.c phylip.c Slist.c clique.c
cp libclique.dylib [JavaTestDir]/libclique.dylib
Но если я сделаю:
Makefile libclique.la (which is what automake generates)
cp .libs/libclique.1.dylib [JavaTestDir]/libclique.dylib
Java находит библиотеку, но не может найти точку входа.
Я прочитал "Как создать общую библиотеку (.so) в скрипте automake?" нить и это очень помогло. Я получил dylib, созданный с флагом -shared (согласно сгенерированному Makefile). Но когда я пытаюсь использовать его из Java Native Access, я получаю сообщение об ошибке «символ не найден».
Глядя на libclique.la
, сгенерированный Makefile, кажется, что в нем нет какой-либо критической информации, просто выглядит как перегрузка ссылок и перемещение вещей для удобства последующих шагов компилятора C/C++ (которых у меня нет) , поэтому я ожидаю, что libclique.1.dylib
будет работающей динамической библиотекой.
Я предполагаю, что именно здесь я ошибаюсь, но, учитывая, что JNA напрямую ссылается на dylib и не компилируется с ним (согласно примеру в обсуждении, приведенном выше), кажется, что все последующие шаги компиляции, описанные в Руководство LibTools спорно.
Примечание. Я тестирую на Mac, но мне также придется делать это на машинах с Windows и Linux, поэтому я пытаюсь поместить это в Automake.
Примечание 2: я использую Eclipse для разработки Java и, да, я импортировал dylib.
Спасибо
nm
говорит вам о символах в .dylib? Действительно ли искомый символ находится в отображаемом списке? - person technomage   schedule 08.01.2013