Почему autoconf/automake проект связался бы против установленной библиотеки вместо локальной библиотеки разработки?

Привет Ранее у меня было Android SDK Build tools 18.1.1 и Windows XP. тогда мое приложение работало правильно.

Но я обновил мою систему до Windows 7, а также обновил Android SDK Build tools to 19, чтобы иметь последние конфигурации.

Но у моего проекта есть файл xercesImpl-2.9.1.jar, поэтому, когда я начал запускать свое приложение с новыми / обновленными конфигурациями, я получал

Conversion to Dalvik format failed with error 1 while parsing org/apache/xerces/impl/xpath/regex/ParserForXMLSchema.class

. Поэтому я прошел через все ответы, которые упомянуты на этот вопрос, но не смог решить. Я задавался вопросом в течение 4 дней, а затем нашел эту ссылку, которая спасла мне жизнь, после прочтения этого я узнал, что проблема связана с xercesImpl-2.9.1.jar с инструментами Android SDK Build до 19.

Так что я понизил его до Android SDK Build tools до 18.1.1. И я избавился от этой проблемы.

Я публикую здесь свой ответ, чтобы, если кто-то столкнулся с этой проблемой, он мог ее решить.

1114 Это заставило меня расстроиться. Надежда поможет другим.

14
задан Beau Simensen 22 July 2009 в 22:23
поделиться

3 ответа

Не знаю, как это сделать в autoconf, но в последней команде может потребоваться -L ../ src, чтобы компоновщик мог сначала найти недавно созданную библиотеку.

Попробуйте вручную запустить последнюю команду с этим дополнением и посмотрите, поможет ли это.

РЕДАКТИРОВАТЬ: Хорошо, я полагаю, я неправильно его прочитал, подумал, что он не связывает, но вы говорите, что он связывает, но не запускается?

Если это так, запустите ldd в вашем двоичном файле и посмотрите, какой .so он подхватит - скорее всего, установленные (и устаревшие).

В этом случае либо установите обновленные библиотеки перед запуском, либо экспортируйте переменную env LD_LIBRARY_PATH перед запуском.

export LD_LIBRARY_PATH="/path to freshly built libs"
1
ответ дан 1 December 2019 в 16:44
поделиться

Я знаю, что для правильной работы зависимостей вам нужно обратиться к libgdata.la с относительным путем в LDADD ; возможно, это также влияет на ситуацию, которую вы описываете.

Но я не знаю почему. Поведение, которое вы описываете, действительно кажется немного странным; и, возможно, стоит сообщить разработчикам libtool.

1
ответ дан 1 December 2019 в 16:44
поделиться

Думаю, я разобрался с этим.

Проблема должна заключаться в том, что libtool видит флаг "-L" в командной строке до того, как увидит часть "../src/libgdata.so". В этом случае он выполняет компоновщик с "-Wl, -rpath, ..." для этого пути "-L". Если этот путь содержит "libgdata.so", он всегда будет использоваться, как здесь.

В моем случае я изменил "prog_LDADD" следующим образом: "prog_LDADD = $ (top_builddir) /src/my_lib.so $ (DEPENDENCY_LIBS)"

В вашем случае попробуйте чтобы удалить AM_LDFLAGS и написать:

LDADD = $ (top_builddir) /src/libgdata.la $ (APIUTIL_LIBS)

2
ответ дан 1 December 2019 в 16:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: