Подтвердить что ты не робот

Как вы ссылаетесь на определенную версию разделяемой библиотеки в GCC

Я компилирую код, который использует libcurl в системе Debian Linux. Моя машина Dev работает под управлением Debian 5, но я хочу, чтобы двоичный файл можно было использовать и на старых системах Debian 4.

Я нахожу, что если я укажу -lcurl, он будет ссылаться на libcurl.so.4, но в системах Debian 4 будет только libcurl.so.3

Можно ли указать GCC для ссылки на libcurl.so.3 (который существует как в Debian 4 и 5), так и в libcurl.so, поэтому он будет использовать любую версию?

4b9b3361

Ответ 1

Вы можете передать фактический .so файл вместо -l в командной строке компоновщика, и он должен делать то, что вы хотите.

Ответ 2

Вместо использования "-lcurl" используйте "-l: libcurl.so.3" И, конечно же, используйте "-L _installed_path _"

Ответ 3

Как создать символическую локальную ссылку для вашего проекта, которая ссылается на .3, тогда вы можете просто использовать -L во время компиляции. Я не уверен, если бы вы получили конфликт имен, но вы всегда можете называть его libcurl-old.so на всякий случай.

Ответ 4

Я думаю, что правильным способом сделать это будет использование флагов --filter и --auxiliary компоновщика.

Они не очень документированы, но должны позволять вам загружать символы из разных версий одной и той же библиотеки в соответствии с установленной вами машиной.