фон вопроса: У меня есть библиотека, скажем mylib.so который включает в себя старый Libpng. Теперь (из-за последних политик Google Play) я должен использовать новый libpng; но это может быть сложно, поскольку библиотека была скомпилирована давно, и может потребоваться очень много времени, чтобы собрать все необходимые библиотеки со старой версией ... и так далее.Удаление библиотеки включены в общую библиотеку
Вопрос:
Можно ли «удалить» определенные записи из файла mylib.so, так что я могу затем связать оба mylib.so и новый libpng.so из моих приложений, и все будет хорошо работать (очевидно, если libpng обратно совместим с ранее связанным внутри mylib.so)?
Я не знаю, внутренностей разделяемых библиотек, но я надеюсь, что-то линкер может быть в состоянии сделать это без перекомпилировать весь mylib.so ... Я слишком оптимистичен?
Дополнительный вопрос (не основной, но я хотел бы понять): если mylib.so включает в себя старый Libpng и связать как к mylib.so и новый libpng ... что происходит? Я имею в виду, что компоновщик позволяет мне связать 2 библиотеки, вероятно, с похожими именами экспортированных символов ... но это немного запутывает ...
Является ли зависимость версией или неверсифицированной? 'readelf' может вам это сказать. Если он неверующий, вам не нужно ничего делать, он должен просто работать. –
Политики Google Play кажутся довольно строгими, они не хотят, чтобы старый _libpng_ присутствовал в вашем приложении .... по этой причине я пытался устранить, испортил :-) или сделать что-то, чтобы преодолеть эту проблему, не имея recompile _mylib.so_ – Prak
1) Это, по-видимому, не относится к одному из разных языков C или C++. 2) Похож на проблему XY.Вы shoudl обновите свою программу/lib, чтобы использовать новый libpng; даже ** iff ** интерфейс не изменился, семантика может. Может быть, вы можете написать обертку lib. 3) Messing с libpng - очень плохая идея, так как это может нарушить другой код в системе. 4) Неясно, чего вы действительно хотите. Что значит «конкретные записи»? – Olaf