(разработка Mac C ++), для динамической библиотеки, где указывается имя_установки в скрипте Makefile.am? - PullRequest
2 голосов
/ 23 января 2011

Я строю проект, используя gnu autotools на Mac. Все компилируется нормально, но у меня проблемы с подключением динамических библиотек. Как мне указать имя_установки в моих скриптах Makefile.am? Я думал, что это может быть что-то вроде следующего:

    lib_LTLIBRARIES = libphysics.la

    libphysics_la_SOURCES = PhysicsEngine.cpp\
       PointMass.cpp\
       Spring.cpp\
       WaterForceGenerator.cpp

    AM_CPPFLAGS=  @CXXFLAGS@\
        -I../include\
        -Iinclude\
        -I../evolutionaryStuff/include\
        -I../geom/include\
        -I../model/include\
        -I../paramsReader/include\
        -I../ctrnn/include\
        -I../simulationSystem/include

    AM_LDFLAGS= @LDFLAGS@ \
        -install_name "./.libs/libphysics.0.dylib"

... пока я делаю:

otool -D libphysics.0.dylib

в каталоге .libs я получаю

/ USR / местные / Библиотека / libphysics.0.dylib

(но я хочу что-то вроде .libs / libphysics.0.dylib)

Я знаю, это должно быть что-то простое, есть идеи?

Спасибо

Бен.

1 Ответ

1 голос
/ 24 января 2011

После взлома кажется, что правильная запись в файле Makefile.am должна быть:

    AM_LDFLAGS= @LDFLAGS@\
             -Xlinker -rpath -Xlinker "`pwd`/.libs"\
             -Xlinker -install_name -Xlinker "`pwd`/.libs/libphsyics.0.dylib"

Я не знаю, почему это работает.Хитрость заключалась в том, чтобы добавить пары флагов '-Xlinker' до и после каждого из '-rpath' и '-install_name'.Если кто-нибудь может сказать мне, почему это необходимо, я был бы благодарен.

Спасибо,

Бен.

РЕДАКТИРОВАТЬ: я должен указать, что сообщение Как установить путь времени выполнения (-rpath) исполняемого файла с gcc под Mac OSX? был полезен при работе с этим.

...