The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Общий порядок компиляции + как узнать версию библиотеки"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Общий порядок компиляции + как узнать версию библиотеки"  
Сообщение от bdimych email on 11-Фев-07, 23:33 
MOPSLinux 5 = Slackware 11

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

Вопросы возникли при попытках сборки vlc player. Это здоровенный можно сказать мультимедийный фрэймворк. Чтобы его собрать нужно ~30 других пакетов которые и между собой тоже связаны. Там есть автоматизация сборки всех нужных пакетов, но с первого раза не получилось. Процесс несколько раз стопорился и в каждом случае приходилось вручную разбираться с несобирающимся пакетом. И когда он наконец таки собрался, заработал тоже не сразу. Пришлось пересобирать несколько раз а на каждую пересборку не меньше 40 минут уходило. Я злился!

Не могу сообразить порядок вообще т.е.
1. autotools делают файлы Makefile и configure
2. gcc и g++ собирает файлы "o" из файлов c/cpp + h/hpp
3. ??? собирает из нескольких "o" файл "a"
4. ??? из "a" делает файл "so"

Статическая сборка - это включение кусков кода из одного "o" в другой ?

Где определяется что программа будет не статической а использовать "so" и какие ? Т.е. например пакет ffmpeg у меня уже есть в /usr/local. Сборочный скрипт vlc качает ffmpeg в свой подкаталог и как быть уверенным что при сборке будет использоваться именно скаченная версия

Что делает ldconfig? Т.е. не может ли он тоже повлиять на то какая версия ffmpeg будет использоваться. Ведь ldconfig при каждой загрузке запускается и что то связывает.

Как узнать версию файла "a" или "so" и вообще понятие версия библиотеки в линуксе что означает. Я виндузятник поэтому о версии представление такое - "правой кнопкой - свойства файла". Пробовал readelf но он выдает нечто большое которое явно не совпадает просто с цифрой в имени файла после "so". Эта цифра как я понимаю и есть версия? Но внутри файла версии нет что ли ? А у файлов "a" где тогда версия ?

я примерно знаю что надо читать: elf + libtool + ld + ldconfig + флаги -L -I -l но как говорил Киса Воробьянинов хочется чтобы побыстрее :) Если не трудно объясните пожалуйста в двух словах.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Общий порядок компиляции + как узнать версию библиотеки"  
Сообщение от DeadMustdie email(??) 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

Вроде того.

>3. ??? собирает из нескольких "o" файл "a"

man ar

>4. ??? из "a" делает файл "so"

man ld
info gcc

>Статическая сборка - это включение кусков кода из одного "o" в другой
>?

Статическая сборка - это сборка без использования динамических библиотек.

>Где определяется что программа будет не статической а использовать "so" и какие
>? Т.е. например пакет ffmpeg у меня уже есть в /usr/local.
>Сборочный скрипт vlc качает ffmpeg в свой подкаталог и как быть
>уверенным что при сборке будет использоваться именно скаченная версия

man ldconfig
Плюс полезные переменные LIBRAY_PATH и LD_LIBRARY_PATH

>Что делает ldconfig? Т.е. не может ли он тоже повлиять на то
>какая версия ffmpeg будет использоваться. Ведь ldconfig при каждой загрузке запускается
>и что то связывает.

Не "что-то связывает", а устанавливает порядок, в котором по стандартным каталогам
ищутся библиотеки.

>Как узнать версию файла "a" или "so" и вообще понятие версия библиотеки
>в линуксе что означает. Я виндузятник поэтому о версии представление такое
>- "правой кнопкой - свойства файла". Пробовал readelf но он выдает
>нечто большое которое явно не совпадает просто с цифрой в имени
>файла после "so". Эта цифра как я понимаю и есть версия?

Эта "цифра" - а точнее их набор - и есть версия.

>Но внутри файла версии нет что ли ? А у файлов "a" где тогда версия ?

"Внутри файла" обычно нет версии. Ни у .so, ни у .a.

>
>я примерно знаю что надо читать: elf + libtool + ld +
>ldconfig + флаги -L -I -l но как говорил Киса Воробьянинов
>хочется чтобы побыстрее :) Если не трудно объясните пожалуйста в двух
>словах.

А Вы пойдете к дантисту, который обучался по книжке "A complete idiot's
guide to dental care"? ;)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру