В проекте у меня уже есть общая библиотека, которая называется, скажем, «myshare».Библиотека уже создана как «libmyshare.so.1.0.0», и ее расположение относительно make-файла по относительному адресу «adir / lib».
В make-файле я хочу создать символические ссылки дляобщая библиотека с именами «libmyshare.so.1» и «libmyshare.so».Чтобы сделать это в make-файле, у меня есть следующие строки:
MYSHAREL = ./adir/lib/libmyshare.so.1.0.0
MYSHAREL1 = ./adir/lib/libmyshare.so.1
MYSHAREL2 = ./adir/lib/libmyshare.so
MYSHARELIBS = $(MYSHAREL) $(MYSHAREL1) $(MYSHAREL2)
.PHONY: all
all: myexetarget
myexetarget : various_files $(MYSHARELIBS)
various_commands_to_make_target
$(MYSHAREL1): $(MYSHAREL)
@echo "Creating symbolic link $(MYSHAREL1)"
@ln -s $(MYSHAREL) $(MYSHAREL1)
$(MYSHAREL2): $(MYSHAREL)
@echo "Creating symbolic link $(MYSHAREL2)"
@ln -s $(MYSHAREL) $(MYSHAREL2)
Когда я запускаю команду 'make', ссылки на общую библиотеку всегда создаются, даже если они уже существуют и даже когда датаобщая библиотека находится до даты создания уже созданных символических ссылок.Кроме того, когда я пытаюсь на самом деле создать ссылку на разделяемую библиотеку в моей цели, несмотря на опции -L./adir/lib
и -lmyshare
среди опций компоновщика (не показаны выше), происходит сбой ссылки:
/usr/bin/ld: cannot find -lmyshare
Оба этипроблемы заставляют меня поверить, что я неправильно указываю имя или относительное расположение разделяемой библиотеки, чтобы обработка make-файла могла это понять.Кто-нибудь знает, что я делаю не так?