Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:1
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Embedded Linux
Live555
xaba
Добавлено 19.08.2012 09:08
0
Сообщение: 1
xaba
4

Пункты: 15268
Регистрация: 23.04.2012
Всем привет!

Интересно, кто нибудь сможет объяснить как собрать библиотеку Live555 shared а не static?
Должна получится такая библиотека - liblivemedia.so.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 19.08.2012 17:30 Сообщение: 2
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Покопайтесь в ключах конфигуратора или в мейкфайле или в доках, в зависимости от того, что у вас за пакет..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 19.08.2012 19:43 Сообщение: 3
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
В buildroot 2012.05 есть
Спуститься к концу Подняться к началу
Персональная информация
xaba
Добавлено 20.08.2012 09:09 Сообщение: 4
xaba
4

Пункты: 15268
Регистрация: 23.04.2012
Странно...
Я использую buildroot-2012.08-rc1.
Сравниваю два конфига от buildroot-2012.05 и buildroot-2012.08-rc1.
ОНИ ИДЕНТИЧНЫ.
В обоих случаях одна и та же версия Библиотеки.
На выходе Получается статическая библиотека libLiveMedia.a.
Есть такой конфиг, может скорее всего нужно дописать что-то типа -fPIC -shared?

CROSS_COMPILE?= arm-elf-
COMPILE_OPTS = $(INCLUDES) -I. -O2 -DSOCKLEN_T=socklen_t -DNO_SSTREAM=1 -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64
C = c
C_COMPILER = $(CROSS_COMPILE)gcc
C_FLAGS = $(COMPILE_OPTS)
CPP = cpp
CPLUSPLUS_COMPILER = $(CROSS_COMPILE)g++
CPLUSPLUS_FLAGS = $(COMPILE_OPTS) -Wall -DBSD=1
OBJ = o
LINK = $(CROSS_COMPILE)g++ -o
LINK_OPTS =
CONSOLE_LINK_OPTS = $(LINK_OPTS)
LIBRARY_LINK = $(CROSS_COMPILE)ar cr
LIBRARY_LINK_OPTS = $(LINK_OPTS)
LIB_SUFFIX = a
LIBS_FOR_CONSOLE_APPLICATION =
LIBS_FOR_GUI_APPLICATION =
EXE =
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 20.08.2012 10:54 Редактировалось 20.08.2012 11:27 Сообщение: 5
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
Я не собирал - посмотрел makefile, там есть такое для LIVE555_INSTALL_STAGING_CMDS
Цитата

for i in $(LIVE555_LIBS_TO_INSTALL); do \
$(INSTALL) -D -m 0755 $(@D)/$$i $(STAGING_DIR)/usr/lib/`basename $$i`; \
done


думаю там должны быть и *so библиотеки, просто в корневую фс они не копируются, посмотрите и добавьте в
Цитата

LIVE555_LIBS_TO_INSTALL = \
liveMedia/libliveMedia.a \
groupsock/libgroupsock.a \
UsageEnvironment/libUsageEnvironment.a \
BasicUsageEnvironment/libBasicUsageEnvironment.a


соответственно добавить нужно копирование и в
Цитата

define LIVE555_INSTALL_TARGET_CMDS
...
Спуститься к концу Подняться к началу
Персональная информация
xaba
Добавлено 20.08.2012 11:34 Сообщение: 6
xaba
4

Пункты: 15268
Регистрация: 23.04.2012
Цитата
Я не собирал - посмотрел makefile, там есть такое для LIVE555_INSTALL_STAGING_CMDS
Цитата

for i in $(LIVE555_LIBS_TO_INSTALL); do \
$(INSTALL) -D -m 0755 $(@D)/$$i $(STAGING_DIR)/usr/lib/`basename $$i`; \
done


думаю там должны быть и *so библиотеки, просто в корневую фс они не копируются


Нет они собираются статическими. проверено.
команда - ar cr
Вот тут то и надо заменить, а на что пока не знаю
gcc -shared -fPIC ??

я так понял нужно по началу создать именно объектный файла, содержащий код, не зависящий от места расположения (Position-Independent Code -fPIC), а потом саму библу.
Не выходит каменный цветок.
Кто собирал библиотеки?
Спуститься к концу Подняться к началу
Персональная информация
xaba
Добавлено 21.08.2012 10:00 Редактировалось 25.08.2012 12:38 Сообщение: 7
xaba
4

Пункты: 15268
Регистрация: 23.04.2012
Победа Господа!!! Собрал таки я библиотеку как общую.
Собрал пока только на Intel linux x86-32. На арме ещё нужно пробовать.
Конечно работоспособность тоже не проверял , НО судя по структуре внутри файла вроде похоже на правду.

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

COMPILE_OPTS = $(INCLUDES) -I. -O2 -DSOCKLEN_T=socklen_t -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64
C = c
C_COMPILER = cc
C_FLAGS = $(COMPILE_OPTS)
CPP = cpp
CPLUSPLUS_COMPILER = c++
CPLUSPLUS_FLAGS = $(COMPILE_OPTS) -Wall -DBSD=1 <---- добавляем флаг -fPIC
OBJ = o
LINK = c++ -o
LINK_OPTS = -L.
CONSOLE_LINK_OPTS = $(LINK_OPTS)
LIBRARY_LINK = ar cr <---- тут меняем на с++ -shared -o
LIBRARY_LINK_OPTS =
LIB_SUFFIX = a <------------------------------- Тут меняем на so
LIBS_FOR_CONSOLE_APPLICATION =
LIBS_FOR_GUI_APPLICATION =
EXE =

В итоге получится libliveMedia.so.
Позже попробую на ARM сделать.

ЗЫ "пример взял тут http://mech.math.msu.su/~zubr/library.html"
Спуститься к концу Подняться к началу
Персональная информация
xaba
Добавлено 21.08.2012 14:38 Редактировалось 21.08.2012 15:43 Сообщение: 8
xaba
4

Пункты: 15268
Регистрация: 23.04.2012
Еще один момент. Библиотека собирается, но тестовые проги которые идут в комплекте не будут собираться.
Чтоб сработало, нужно добавить в конфиг
LINK = c++ -lgroupsock -lUsageEnvironment -lBasicUsageEnvironment -lliveMedia -o

а в папках mediaServer/ и testProgs/
найти файл Makefile.
Ищем там переменную LOCAL_LIBS и убираем все ее содержимое.

Хм.. Помойму придется научиться писать PATCH.
Позже попробую написать

Надеюсь, что кому нибудь пригодится))))
Спуститься к концу Подняться к началу
Персональная информация
xaba
Добавлено 22.08.2012 00:05 Редактировалось 22.08.2012 00:07 Сообщение: 9
xaba
4

Пункты: 15268
Регистрация: 23.04.2012
переписал конфиг для live555.
Достаточно только сохранить его в папку package/live555/ и все.
Attachment file: uploads/forum/forum-un1PS7Ue79-10061.rar
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux