Como escrever o Makefile para empacotar uma biblioteca dinâmica .so que instalará todos os links necessários

0

Preciso de ajuda para escrever um Makefile que instale minha biblioteca no Linux FHS. O link diz que deve haver um link de .so para .so.$(version).$(minor) e um link de .so.$(version) para .so para .so.$(version).$(minor) . Abaixo está o snippet do meu Makefile

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)

após o empacotamento com dpkg-buildpackage -rfakeroot -b e a instalação do pacote, os soft links criados apontam para real. usado para compilar o pacote, mas não para o .so que foi instalado em /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
    
por neckTwi 24.08.2014 / 22:32

1 resposta

1

Para os links simbólicos para bibliotecas que eu encontrei no meu sistema, os links eram todos relativos e não absolutos:

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

Então, parece que o Makefile deve fazer um cd para a pasta da biblioteca e criar links simbólicos relativos:

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 -
    
por muru 25.08.2014 / 00:37