我需要帮助来编写一个 Makefile,以便在 Linux FHS 上安装我的库。https://www.debian.org/doc/debian-policy/ch-sharedlibs.html#s-sharedlibs-dev说应该有一个从.so
到 的链接和一个从到到 的.so.$(version).$(minor)
链接。下面是我的 Makefile 的片段.so.$(version)
.so
.so.$(version).$(minor)
install -D ${CND_ARTIFACT_PATH_${CONF}} $(DESTDIR)/usr/lib/${CND_ARTIFACT_NAME_${CONF}}.$(version).0.0
ln -s $(DESTDIR)/usr/lib/${CND_ARTIFACT_NAME_${CONF}}.$(version).0.0 $(DESTDIR)/usr/lib/${CND_ARTIFACT_NAME_${CONF}}
ln -s $(DESTDIR)/usr/lib/${CND_ARTIFACT_NAME_${CONF}}.$(version).0.0 $(DESTDIR)/usr/lib/${CND_ARTIFACT_NAME_${CONF}}.$(version)
打包dpkg-buildpackage -rfakeroot -b
并安装软件包后,创建的软链接指向用于构建软件包的实际 .so,而不是指向安装的 .so/usr/lib/
gowtham@VBUbu:~$ ls -la /usr/lib/libbase.so.1*
lrwxrwxrwx 1 root root 67 Aug 25 00:35 /usr/lib/libbase.so.1 -> /home/gowtham/Packages/base-1.0/debian/tmp/usr/lib/libbase.so.1.0.0
-rw-r--r-- 1 root root 170588 Aug 25 00:35 /usr/lib/libbase.so.1.0.0
答案1
对于我在系统上可以找到的库的符号链接,这些链接都是相对的,而不是绝对的:
lrwxrwxrwx 1 root root 14 Aug 9 03:52 libwine.so -> libwine.so.1.0
lrwxrwxrwx 1 root root 14 Aug 9 03:52 libwine.so.1 -> libwine.so.1.0
因此,看起来 Makefile 应该cd
对库文件夹执行操作并创建相对符号链接:
cd $(DESTDIR)/usr/lib
ln -s ${CND_ARTIFACT_NAME_${CONF}}.$(version).0.0 ${CND_ARTIFACT_NAME_${CONF}}
ln -s ${CND_ARTIFACT_NAME_${CONF}}.$(version).0.0 ${CND_ARTIFACT_NAME_${CONF}}.$(version)
cd -