Я начинающий но уже продвинутый. Не могу сообразить принципы стандартной сборки приложения linux.
Вопросы возникли при попытках сборки vlc player. Это здоровенный можно сказать мультимедийный фрэймворк. Чтобы его собрать нужно
30 других пакетов которые и между собой тоже связаны. Там есть автоматизация сборки всех нужных пакетов, но с первого раза не получилось. Процесс несколько раз стопорился и в каждом случае приходилось вручную разбираться с несобирающимся пакетом. И когда он наконец таки собрался, заработал тоже не сразу. Пришлось пересобирать несколько раз а на каждую пересборку не меньше 40 минут уходило. Я злился!
Что делает ldconfig? Т.е. не может ли он тоже повлиять на то какая версия ffmpeg будет использоваться. Ведь ldconfig при каждой загрузке запускается и что то связывает.
1. «Общий порядок компиляции + как узнать версию библиотеки»
Сообщение от DeadMustdie(??) on 12-Фев-07, 11:36
>MOPSLinux 5 = Slackware 11 > >Я начинающий но уже продвинутый. Не могу сообразить принципы стандартной сборки приложения >linux. > >Вопросы возникли при попытках сборки vlc player. Это здоровенный можно сказать мультимедийный >фрэймворк. Чтобы его собрать нужно
30 других пакетов которые и между >собой тоже связаны. Там есть автоматизация сборки всех нужных пакетов, но >с первого раза не получилось. Процесс несколько раз стопорился и в >каждом случае приходилось вручную разбираться с несобирающимся пакетом. И когда он >наконец таки собрался, заработал тоже не сразу. Пришлось пересобирать несколько раз >а на каждую пересборку не меньше 40 минут уходило. Я злился!
> >Не могу сообразить порядок вообще т.е. >1. autotools делают файлы Makefile и configure
autotools делают configure, потом configure делает Makefile’ы и config.h’ы. Делают они это преотвратно, IMHO.
>2. gcc и g++ собирает файлы «o» из файлов c/cpp + h/hpp
>Где определяется что программа будет не статической а использовать «so» и какие >? Т.е. например пакет ffmpeg у меня уже есть в /usr/local. >Сборочный скрипт vlc качает ffmpeg в свой подкаталог и как быть >уверенным что при сборке будет использоваться именно скаченная версия
man ldconfig Плюс полезные переменные LIBRAY_PATH и LD_LIBRARY_PATH
>Что делает ldconfig? Т.е. не может ли он тоже повлиять на то >какая версия ffmpeg будет использоваться. Ведь ldconfig при каждой загрузке запускается >и что то связывает.
Не «что-то связывает», а устанавливает порядок, в котором по стандартным каталогам ищутся библиотеки.
А Вы пойдете к дантисту, который обучался по книжке «A complete idiot’s guide to dental care»? 😉
Все мы привыкли пользоваться программами в любой операционной системе для решения своих задач. Но за функциональностью программ стоит еще одна вещь, с которой мы редко встречаемся при обычной работе с компьютером. Это библиотеки, которые содержат общий набор функций и возможностей, используемых программами. Например, большинство программ, написанных на Си, используют стандартную библиотеку Си, в которой содержатся все основные возможности взаимодействия с системой.
У каждой программы есть свой набор библиотек, которые должны быть в системе чтобы она смогла работать. Иначе бы программистам пришлось заново изобретать различные алгоритмы, писать много кода и разработка программ занимала бы в разы больше времени. В этой статье мы собрали основные библиотеки Linux, а также их предназначение. Эта информация поможет вам лучше освоиться в системе.
Что такое библиотеки?
Как получить информацию о библиотеках?
Перед тем как перейти к рассмотрению самих библиотек, вам, наверное, будет интересно, как получить информацию о них и узнать где они находятся в вашей системе. Библиотеки Linux могут быть размещены в различных каталогах, в зависимости от дистрибутива, но посмотреть эти каталоги можно, выполнив:
Во всех перечисленных здесь каталогах находятся статические и динамически библиотеки Linux:
Информацию о зависимостях каждой библиотеки вы можете посмотреть командой ldd:
А еще можно узнать какому пакету принадлежит библиотека в Ubuntu:
Как видите, библиотека ld.so принадлежит пакету libc6, точнее она входит в набор инструментов Си. Более подробно, о том, как устанавливать новые библиотеки и решать проблемы с ними, описано в статье библиотеки Ubuntu.
Основные библиотеки
Это библиотеки основных языков программирования, которые содержат базовую функциональность для взаимодействия с системой.
Библиотеки кодеков
Эти библиотеки содержат наборы кодеков для воспроизведения различных медиа данных. Некоторые из них имеют несвободную лицензию или закрытый исходный код:
Звуковые библиотеки
Работа с архивами
Графические библиотеки
Работа с текстом
Безопасность
Библиотеки драйверов
Эмуляция
Выводы
В этой статье мы собрали основные библиотеки Linux, которые имеют наибольшее значение для работы операционной системы. Конечно, невозможно перечислить здесь абсолютно все библиотеки, потому что их очень много. Надеюсь эта информация была полезной для вас.
Как узнать, какая версия библиотеки libstdС++ установлена на вашей Linux-машине?
Я нашел следующую команду: strings /usr/lib/libstdc++.so.6 | grep GLIBC from здесь. Кажется, что это работает, но это ad-hoc/эвристический метод.
Существует ли конкретная команда, которая может использоваться для запроса версии библиотеки С++? Или метод, которым я нашел принятый метод?
ОТВЕТЫ
Ответ 1
Чтобы найти, какая библиотека используется, вы можете запустить
Список совместимых версий для libstdС++ версии 3.4.0 и выше предоставляется
Печать даты библиотеки определяется макросом __GLIBCXX__ или __GLIBCPP__ в зависимости от версии:
Таблица datestamps версий libstdС++ приведена в документации:
Ответ 2
В общем, соответствие версии ABI должно быть достаточно хорошим.
Если, однако, вы пытаетесь получить двоичный файл, который был скомпилирован в systemX, чтобы работать с systemY, тогда эти вещи доберутся до вас. В этих случаях перенос с копией libstdС++, который использовался для приложения, а затем с запуском script, который выполняет:
Ответ 3
Что именно вы хотите знать?
Небольшой номер версии? Вы можете получить это, просто проверив, на что указывает символическая ссылка:
Или, на большинстве дистрибутивов, вы можете просто спросить менеджера пакетов. На моем хосте Fedora, который
Как уже говорилось в других ответах, вы можете сопоставить выпуски версий библиотек, проверив документы ABI
Как узнать версию программы, находящейся в репозитории Debian, без помощи пакетных менеджеров?
Посмотреть на packages.debian.org?
Посмотреть на сайте Debian’а [pokerface.png]
ну или искать в man ключ.
Буду рад услышать от ылиты более Ъ-методы. Подписался.
Проwgetить ее каталог
без браузера желательно
дело в том, что у тс не debian
И без интернета? Но зачем? 🙂
Точнее проcurlить. Я даже однострочник наваял на коленке:
Извращенец? aptitude versions package Решает
спс, а чем так wine не угодил?
ну не debian у меня
потому что пиво дороже выходит при таком же количестве эффекта, а коньяк мне жинка запретила временно. Да, а вообще я против вина и за коньяк
Я думаю в этом твоя и проблема, что у тебя не debian. А по теме думаю или packages качать, либо на packages.debian.org смотреть. Надо учитывать, что несколько веток (stable, testing, sid, experimental, backports) и то что пакет может немного называться по-другому в отличие от твоего дистра.
и не дебиан, и не сходить в интернет? Тогда только через libastral.
без помощи пакетных менеджеров
А имя пакета с программой и расположение его в зеркале телепатия подскажет.
Давай переформулируем вопрос. Как хоть в каком-нибудь дистрибутиве узнать версию программы без пакетного менеджера и без браузера?
Посему оговорку про коленку и написал. Сложный и правильный пример пусть пишут те, у кого неарч
Дубль два показывает версии исходников со странички(поправьте регекспы, мне лень):
В том-то и дело, что зная название пакета дёрнуть версию нетрудно. Тут ты всё правильно делаешь.
Но ведь в условии стоит «узнать версию программы». Т.е. пакет неизвестен. Вот я и пытаюсь узнать у ТС, как он без пакетного менеджера будет искать версию программы в консоли для любого дистра.
ааа. То есть ты распарсил как «узнать версию того же echo из coreutils без всего»?
спасибо, то что надо!
А разве не это имелось ввиду? 🙂
Зачем знать версию программы в разных дистрах как раз вопрос простой. Мало ли там, статистику собрать захотелось. Или автоматическое сравнение дистрибутивов какое.