LINUX.ORG.RU

История изменений

Исправление wandrien, (текущая версия) :

Конечно, не уверен :) вот и поспрашиваю народ

Смотри, как всё это работает при линковке:

  1. Программа хочет линковаться с libcurl. Она юзает при вызове линковщика (или gcc) флаг -lcurl.
  2. Линковщик находит libcurl.so.
  3. Этот libcurl.so на самом деле линк на libcurl.so.4.8.0. Линковщику на это пофиг. Он просто читает этот elf и задаёт вопрос: «какой у тебя soname?»
  4. В libcurl.so.4.8.0 указано, что soname у него libcurl.so.4. Именно это является названием данного ABI.
  5. Линковщик берёт указанное имя libcurl.so.4 и зашивает его в таблицу needed собираемого бинаря.

Как видишь, места особо разгуляться тут нет. Ты либо меняешь soname в самой либе (можно тем же самым patchelf), либо патчишь бинарь после сборки, как сделал выше.

Исправление wandrien, :

Конечно, не уверен :) вот и поспрашиваю народ

Смотри, как всё это работает при линковке:

  1. Программа хочет линковать с libcurl. Она юзает при вызове линковщика (или gcc) флаг -lcurl.
  2. Линковщик находит libcurl.so.
  3. Этот libcurl.so на самом деле линк на libcurl.so.4.8.0. Линковщику на это пофиг. Он просто читает этот elf и задаёт вопрос: «какой у тебя soname?»
  4. В libcurl.so.4.8.0 указано, что soname у него libcurl.so.4. Именно это является названием данного ABI.
  5. Линковщик берёт указанное имя libcurl.so.4 и зашивает его в таблицу needed собираемого бинаря.

Как видишь, места особо разгуляться тут нет. Ты либо меняешь soname в самой либе (можно тем же самым patchelf), либо патчишь бинарь после сборки, как сделал выше.

Исправление wandrien, :

Конечно, не уверен :) вот и поспрашиваю народ

Смотри, как всё это работает при линковке:

  1. Программа хочет линковать с libcurl. Она юзает при вызове линковщика (или gcc) флаг -lcurl.
  2. Линковщик находит libcurl.so.
  3. Этот libcurl.so на самом деле линк на libcurl.so.4.8.0. Линковщику на это пофиг. Он просто читает этот elf и задаёт вопрос: «какой у тебя soname?»
  4. В libcurl.so.4.8.0 указано, что soname у него libcurl.so.4. Именно это является названием данного ABI.
  5. Линковщик берёт указанное имя libcurl.so.4 и зашивает его в таблицу needed собираемого бинаря.

Как видишь, места особо разгуляться тут нет. Ты либо меняешь soname в самой либо (можно тем же самым patchelf), либо патчишь бинарь после сборки, как сделал выше.

Исходная версия wandrien, :

Конечно, не уверен :) вот и поспрашиваю народ

Смотри, как всё это работает при линковке:

  1. Программа хочет линковать с libcurl. Она юзает при вызове линковщика (или gcc) флаг -lcurl.
  2. Линковщик находит libcurl.so.
  3. Этот libcurl.so на самом деле линк libcurl.so.4.8.0. Линковщику на это пофиг. Он просто читает этот elf и задаёт вопрос: «какой у тебя soname?»
  4. В libcurl.so.4.8.0 указано, что soname у него libcurl.so.4. Именно это является названием данного ABI.
  5. Линковщик берёт указанное имя libcurl.so.4 и зашивает его в таблицу needed собираемого бинаря.

Как видишь, места особо разгуляться тут нет. Ты либо меняешь soname в самой либо (можно тем же самым patchelf), либо патчишь бинарь после сборки, как сделал выше.