Libtool не создает символические ссылки с информацией о версии во время установки

Я ищу помощи с неловкой проблемой с libtool при создании этой библиотеки: http://github.com/mspanc/vspec< /а>

Когда я создаю его на своей машине Ubuntu 14.04, он работает нормально, добавляю во время установки make, он создает соответствующие символические ссылки .so.VERSION_INFO.

Однако, когда я пытаюсь перекрестно скомпилировать его, используя систему сборки Cerbero из проекта GStreamer (http://cgit.freedesktop.org/gstreamer/cerbero/), который в основном загружает цепочки инструментов для кросс-компиляции, во время установки он создает только файлы .so (без символических ссылок .so.VERSION_INFO), но только для этой библиотеки, он делает это успешно для других библиотек в той же среде сборки.

По-видимому, должна быть какая-то разница, но я различаю автомейки vspec и другого проекта, который уже довольно давно устанавливается нормально, и до сих пор не могу понять, в чем основная причина проблемы.

Я обнаружил, что libtool скрипт в сломанной библиотеке, сгенерированный при запуске ./configure --prefix /root/cerbero/dist/android_armv7 --libdir /root/cerbero/dist/android_armv7/lib --disable-maintainer-mode --disable-silent-rules --disable-introspection --host=arm-linux-androideabi, имеет version_type=none, в то время как тот, который строит, имеет правильно установленную для этой переменной значение linux. Эта разница позже приводит к тому, что libtool не добавляет символические ссылки.

Может ли кто-нибудь здесь дать мне подсказку, где я должен искать причины недопустимого распознавания хоста при создании libtool?

Ниже приведен журнал установки Cerbero:

Making install in src
make[1]: Entering directory `/root/cerbero/sources/android_armv7/libvspec-1.0-1.0.0/src'
make[2]: Entering directory `/root/cerbero/sources/android_armv7/libvspec-1.0-1.0.0/src'
 /bin/mkdir -p '/root/cerbero/dist/android_armv7/lib'
 /bin/bash ../libtool   --mode=install /usr/bin/install -c   libvspec-1.0.la '/root/cerbero/dist/android_armv7/lib'
libtool: install: /usr/bin/install -c .libs/libvspec-1.0.so /root/cerbero/dist/android_armv7/lib/libvspec-1.0.so
libtool: install: /usr/bin/install -c .libs/libvspec-1.0.lai /root/cerbero/dist/android_armv7/lib/libvspec-1.0.la
libtool: install: /usr/bin/install -c .libs/libvspec-1.0.a /root/cerbero/dist/android_armv7/lib/libvspec-1.0.a
libtool: install: chmod 644 /root/cerbero/dist/android_armv7/lib/libvspec-1.0.a
libtool: install: arm-linux-androideabi-ranlib /root/cerbero/dist/android_armv7/lib/libvspec-1.0.a
 /bin/mkdir -p '/root/cerbero/dist/android_armv7/share/vala/vapi'
 /usr/bin/install -c -m 644 libvspec-1.0.vapi libvspec-1.0.deps '/root/cerbero/dist/android_armv7/share/vala/vapi'
 /bin/mkdir -p '/root/cerbero/dist/android_armv7/include/libvspec-1.0'
 /usr/bin/install -c -m 644 libvspec.h '/root/cerbero/dist/android_armv7/include/libvspec-1.0'
 /bin/mkdir -p '/root/cerbero/dist/android_armv7/lib/pkgconfig'
 /usr/bin/install -c -m 644 libvspec-1.0.pc '/root/cerbero/dist/android_armv7/lib/pkgconfig'
make[2]: Leaving directory `/root/cerbero/sources/android_armv7/libvspec-1.0-1.0.0/src'
make[1]: Leaving directory `/root/cerbero/sources/android_armv7/libvspec-1.0-1.0.0/src'
make[1]: Entering directory `/root/cerbero/sources/android_armv7/libvspec-1.0-1.0.0'
make[2]: Entering directory `/root/cerbero/sources/android_armv7/libvspec-1.0-1.0.0'
make[2]: Nothing to be done for `install-exec-am'.
make[2]: Nothing to be done for `install-data-am'.
make[2]: Leaving directory `/root/cerbero/sources/android_armv7/libvspec-1.0-1.0.0'
make[1]: Leaving directory `/root/cerbero/sources/android_armv7/libvspec-1.0-1.0.0'
Running command 'make install'

И та же команда на моем ящике Ubuntu 14.04:

$ LC_ALL=C sudo make install
Making install in src
make[1]: Entering directory `/home/marcin/aktivitis/radiokit/vspec/src'
make[2]: Entering directory `/home/marcin/aktivitis/radiokit/vspec/src'
 /bin/mkdir -p '/usr/local/lib'
 /bin/bash ../libtool   --mode=install /usr/bin/install -c   libvspec-1.0.la '/usr/local/lib'
libtool: install: /usr/bin/install -c .libs/libvspec-1.0.so.1.0.0 /usr/local/lib/libvspec-1.0.so.1.0.0
libtool: install: (cd /usr/local/lib && { ln -s -f libvspec-1.0.so.1.0.0 libvspec-1.0.so.1 || { rm -f libvspec-1.0.so.1 && ln -s libvspec-1.0.so.1.0.0 libvspec-1.0.so.1; }; })
libtool: install: (cd /usr/local/lib && { ln -s -f libvspec-1.0.so.1.0.0 libvspec-1.0.so || { rm -f libvspec-1.0.so && ln -s libvspec-1.0.so.1.0.0 libvspec-1.0.so; }; })
libtool: install: /usr/bin/install -c .libs/libvspec-1.0.lai /usr/local/lib/libvspec-1.0.la
libtool: install: /usr/bin/install -c .libs/libvspec-1.0.a /usr/local/lib/libvspec-1.0.a
libtool: install: chmod 644 /usr/local/lib/libvspec-1.0.a
libtool: install: ranlib /usr/local/lib/libvspec-1.0.a
libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/sbin" ldconfig -n /usr/local/lib
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
 /bin/mkdir -p '/usr/local/share/vala/vapi'
 /usr/bin/install -c -m 644 libvspec-1.0.vapi libvspec-1.0.deps '/usr/local/share/vala/vapi'
 /bin/mkdir -p '/usr/local/include/libvspec-1.0'
 /usr/bin/install -c -m 644 libvspec.h '/usr/local/include/libvspec-1.0'
 /bin/mkdir -p '/usr/local/lib/pkgconfig'
 /usr/bin/install -c -m 644 libvspec-1.0.pc '/usr/local/lib/pkgconfig'
make[2]: Leaving directory `/home/marcin/aktivitis/radiokit/vspec/src'
make[1]: Leaving directory `/home/marcin/aktivitis/radiokit/vspec/src'
make[1]: Entering directory `/home/marcin/aktivitis/radiokit/vspec'
make[2]: Entering directory `/home/marcin/aktivitis/radiokit/vspec'
make[2]: Nothing to be done for `install-exec-am'.
make[2]: Nothing to be done for `install-data-am'.
make[2]: Leaving directory `/home/marcin/aktivitis/radiokit/vspec'
make[1]: Leaving directory `/home/marcin/aktivitis/radiokit/vspec'

Спасибо,

Марчин


person mspanc    schedule 13.03.2016    source источник


Ответы (1)


Для Android это ожидаемый вывод libtool для этой платформы. См. комментарии к этому патчу libtool. Библиотеки с версиями не будут добавлены в Android.

person ldav1s    schedule 16.03.2016