Вы решили, что проблема, но я хотел предоставить эту справочную информацию для будущих посетителей, потому что есть еще кое-что для создания динамической библиотеки в OS X. Также см. Создание динамических библиотек в Apple Developerстраниц.
OS X не использует соглашение libcoolstuff.so.X.Y.Z
.OS X использует соглашение libcoolstuff.X.dylib
.Для встраивания X.Y.Z
в библиотеку используйте -install_name
, -current_version
и -compatibility_version
.
Я не знаю Cmake, но вот как это выглядит в Make.Ваш рецепт построения libcoolstuff
1.0.6 будет выглядеть так:
libcoolstuff libcoolstuff.dylib:
$(CC) $(CFLAGS) -dynamiclib -install_name "libcoolstuff.1.dylib" \
-current_version 1.0.6 -compatibility_version 1.0 -o libcoolstuff.1.dylib $(OBJS)
А ваше правило make install
будет выглядеть так:
PREFIX?=/usr/local
LIBDIR?=$(PREFIX)/lib
...
install:
cp -f libcoolstuff.1.dylib $(LIBDIR)/libcoolstuff.1.dylib
rm -f $(LIBDIR)/libcoolstuff.dylib
ln -s $(LIBDIR)/libcoolstuff.1.dylib $(LIBDIR)/libcoolstuff.dylib
install_name_tool -change "libcoolstuff.1.dylib" "$(LIBDIR)/libcoolstuff.1.dylib" $(LIBDIR)/libcoolstuff.1.dylib
Под otool
это выглядиткак:
$ otool -L libcoolstuff.dylib
libcoolstuff.dylib:
libcoolstuff.1.dylib (compatibility version 1.0.0, current version 1.0.6)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.7)
Наконец, вы будете использовать его, как ожидалось:
export CFLAGS="-NDEBUG -g2 -O2 -Wall -arch ppc -arch ppc64"
make
...