Перейти до

Новая сборка СТГ 2.4


Рекомендованные сообщения

Это либо фича дистрибутива, либо Вашей системы сборки. При компоновке по умолчанию используется ключ --as-needed компоновщика.

Эм... Ну дык я о чем и говорю :-) На http://www.freesource.info/wiki/AltLinux/S...earch=as-needed так и сказано: "С марта 2006 в ALT Linux наблюдается ld -Wl,--as-needed по умолчанию"

Ссылка на сообщение
Поделиться на других сайтах
  • Відповіді 112
  • Створено
  • Остання відповідь

Top Posters In This Topic

2Drool:

По поводу логов компиляции.

+ /usr/bin/subst 's|gmake|gmake CFLAGS="-pipe -Wall -O2 -march=athlon -mtune=athlon-xp"|g' ./build

Я так понимаю, эта подстановка - работа автоматизированной системы сборки. Так вот, для библиотек и модулей обязательно нужно указывать -fPIC для генерации позиционно-независимоого кода. Сообщения:

/usr/bin/ld: warning: creating a DT_TEXTREL in a shared object.

как раз об этом и предупреждают.

 

PS: судя по бинарникам в rpm'ке у вас не пофикшен install_bin. Поправьте как указано тут: http://local.com.ua/forum/index.php?showto...indpost&p=66146

/usr/bin/subst 's|gmake|gmake CFLAGS="-pipe -Wall -O2 -march=athlon -mtune=athlon-xp"|g' ./build - это я подставляю в спеке сам, так как существующие ключи не отрабатывают --target для rpm-based дистрибутивов, и если я у себя на athlon соберу с ключем, к примеру --target i586, то на выходе я получу *.i586.rpm-пакет, но истинность архитектуры i586 будет весьма сомнительна.

Как правильно подставить флаги архитектуры в спеке:

%__subst 's|gmake|gmake CFLAGS="%optflags"|g' ./build

чтоб сохранить -fPIC ?

%optflags - переменная, которая зависит от указания --target

Ссылка на сообщение
Поделиться на других сайтах
Выход 1:

Использовать ключ --no-as-needed при сборке (-Wl,--no-as-needed для g++) - он должен быть указан ДО списка библиотек

Выход 2:

Глобально изменить систему сборки библиотек и модулей и указывать в них зависимости от других библиотек через -l<name>

Относительно 1-го варианта. В Makefile старгайзера:

LDFLAGS = -g3 -Wl,-E -L$(DIR_LIB) -Wl,-rpath,$(DIR_LIB) -Wl,-rpath,/usr/lib/stg

Корректно ли будет сделать так:

LDFLAGS = -Wl,--no-as-needed -g3 -Wl,-E -L$(DIR_LIB) -Wl,-rpath,$(DIR_LIB) -Wl,-rpath,/usr/lib/stg

?

 

Для "себя" по-горячему и на скору руку - пойдет, но мантейнить в сизиф такое - нельзя...

Ссылка на сообщение
Поделиться на других сайтах
Относительно 1-го варианта. В Makefile старгайзера:

LDFLAGS = -g3 -Wl,-E -L$(DIR_LIB) -Wl,-rpath,$(DIR_LIB) -Wl,-rpath,/usr/lib/stg

Корректно ли будет сделать так:

LDFLAGS = -Wl,--no-as-needed -g3 -Wl,-E -L$(DIR_LIB) -Wl,-rpath,$(DIR_LIB) -Wl,-rpath,/usr/lib/stg

?

Попробовал - недостаточно. Видать не туды я пихаю этот ключик. =:-/

Ссылка на сообщение
Поделиться на других сайтах
Интересно было бы посмотреть на вывод команды objdump -t libstg_crypto.so | grep Blowfish

ls -l | grep libstg_crypto.so

-rw------- 1 builder builder 15172 Sep 16 19:13 libstg_crypto.so

 

objdump -t ./libstg_crypto.so | grep Blowfish

(в ответ - тишина, ничегошеньки)

Ссылка на сообщение
Поделиться на других сайтах
Так вот, для библиотек и модулей обязательно нужно указывать -fPIC для генерации позиционно-независимоого кода. Сообщения:

/usr/bin/ld: warning: creating a DT_TEXTREL in a shared object.

как раз об этом и предупреждают.

 

PS: судя по бинарникам в rpm'ке у вас не пофикшен install_bin. Поправьте как указано тут: http://local.com.ua/forum/index.php?showto...indpost&p=66146

Поправил -fPIC а также install_bin. Собирается, но только с отключенной проверкой на unresolved. Также присутствует жалоба на ненайденные библиотеки при генерировании requires самим rpm-ом.

Спек, патчи и лог сборки выложил:

http://fly.osdn.org.ua/~drool/stargazer/sp...ild_log.tar.bz2

Хотелось бы увидеть комментарии к этому делу.

Ссылка на сообщение
Поделиться на других сайтах
madf & Drool может вам в аське пообщаться чтобы тему не захламлять?

Было бы неплохо. Моя аська указана в данных

 

P.S. Таки рассылка удобнее

Ссылка на сообщение
Поделиться на других сайтах

Конечно, было бы неплохо форкнуть тему (или использовать ЖЖ), но в условиях форума довольно сложно.

--no-as-needed нужно пихать в ключи сборки сервера (в корневой Makefile stargazer), а не в сборку библиотек или модулей. Потому что --no-as-needed относится именно к серверу.

Warnings по поводу сборки модулей (undefined symbol) - результат неявного указания зависимостей от различных библиотек и объектных файлов сервера. Тоесть, это издержки системы сборки - зависимости разрешаются при компоновке сервера.

Выход один - кардинально менять систему сборки сервера, что сейчас и происходит.

Ссылка на сообщение
Поделиться на других сайтах

PS:

Я один из разработчиков Stargazer, наравне с Борей. Примкнул к проекту год назад. Последний релиз (в частности - модуль firebird) - моя работа. Пинать по поводу ошибок меня :). Не знаю, насколько часто будет постить коменты Боря, но я - по мере интереса и свободного времени.

Ссылка на сообщение
Поделиться на других сайтах

Ага... замечательно.

 

Уважаемый madf.

FreeBSD 6.2

Firebird-2.0.2.12964-0

STG - новая сборка.

 

При сборке с

#define NO_DAEMON 1

Все замечательно.

 

А вот без оного не запускается.

В логах при этом вот что:

-- Storage plugin: firebird_store v.1.2. Loading successfull.                                                                          

-- Error starting transaction!

-- Broken pipe!

-- Broken pipe!

И все...

 

Вопрос: что не так делаю?

Ссылка на сообщение
Поделиться на других сайтах

2Alferov:

Я уже писал немного выше - закомментировать код функции printfd из файла stglibs/common.lib/common.cpp (строки 77 - 96)

Это помогает, но я пока не могу сказать, почему такое происходит

Ссылка на сообщение
Поделиться на других сайтах
Конечно, было бы неплохо форкнуть тему

Не нужно форкать, есть уже:

http://local.com.ua/forum/index.php?act=ST&f=4&t=9466

Ссылка на сообщение
Поделиться на других сайтах
Гость
Эта тема закрыта для публикации сообщений.
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.


×
×
  • Створити нове...