LINUX.ORG.RU

[Не могу установить программу][Lenny] Проблемы с установкой guitarix

 


0

0

Здравствуйте!

Хочу установить вот эту программу: http://guitarix.sourceforge.net, версию 0.06.

Имею дистрибутив Debian Lenny. На сайте есть ссылка на репозитарий с пакетом для Sid (правда версия 0.05). Я его конечно попробовал установить, но получил неудовлетворенные зависимости:

guitarix:
 Зависит: libfontconfig1 (>=2.8.0) но 2.6.0-3 установлен
 Зависит: libjack0 (>=0.118+svn3796) но 0.109.2-5 установлен
 Зависит: libsndfile1 (>=1.0.20) но 1.0.17-4+lenny2 установлен
 Зависит: libstdc++6 (>=4.4.0) но 4.3.2-1.1 установлен
 Рекомендует: jack-capture  but it is not installable
 Рекомендует: vorbistools  but it is not installable

Тогда попробовал собрать из исходников. Для компиляции используется странная система сборки waf.

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

# ./waf configure
Checking for program g++                 : ok /usr/bin/g++
Checking for compiler version            : ok 4.3.2
Checking for program cpp                 : ok /usr/bin/cpp
Checking for program ar                  : ok /usr/bin/ar
Checking for program ranlib              : ok /usr/bin/ranlib
Checking for g++                         : ok
Checking for jack >= 0.109.1             : ok
Checking for sndfile >= 1.0.17           : ok
Checking for gthread-2.0 >= 2.10         : ok
Checking for gtk+-2.0 >= 2.12.0          : ok
Checking for header ladspa.h             : ok

==================
GUITARIX 0.06.0

C++ flags                                : -O3  -march=native -Wall -std=c++0x
Install prefix                           : /usr/local
Install binary                           : /usr/local/bin
Install ladspa                           : /usr/local/lib/ladspa
Guitarix style directory                 : /usr/local/share/guitarix/skins
Guitarix builder directory               : /usr/local/share/guitarix/builder
Guitarix pixmaps directory               : /usr/local/share/pixmaps

А при компиляции вылазят ошибки:

# ./waf build
...
[10/38] cxx: src/gx_child_process.cpp -> build/default/src/gx_child_process_1.o
In file included from ../src/headers/guitarix.h:47,
                 from ../src/gx_child_process.cpp:47:
../src/headers/gx_main_interface.h:92: error: expected unqualified-id before ‘{’ token
../src/headers/gx_main_interface.h:98: error: expected unqualified-id before ‘{’ token
../src/headers/gx_main_interface.h:104: error: expected unqualified-id before ‘{’ token
../src/headers/gx_main_interface.h:110: error: expected unqualified-id before ‘{’ token
../src/headers/gx_main_interface.h: In constructor ‘gx_gui::BaseParameter::BaseParameter(std::string, float*, float, float, float, float)’:
../src/headers/gx_main_interface.h:91: error: expected `(' before ‘{’ token
../src/headers/gx_main_interface.h:91: warning: left-hand operand of comma has no effect
../src/headers/gx_main_interface.h:91: warning: right-hand operand of comma has no effect

...

../src/headers/gx_main_interface.h:109: error: expected `(' before ‘{’ token
../src/headers/gx_main_interface.h:109: warning: left-hand operand of comma has no effect
../src/headers/gx_main_interface.h:109: error: expected `;' before ‘}’ token
../src/headers/gx_main_interface.h:109: warning: right-hand operand of comma has no effect
Build failed
 -> task failed (err #1):
        {task: cxx gx_child_process.cpp -> gx_child_process_1.o}

Я пробовал собирать и с помощью gcc 4.1, но тогда компиляция затывается сразу, так как компилер не знает флага "-std=c++0x".

Вопрос. Что можно сделать с такой ошибкой, как заставить компилироваться?


Да, попытался принудительно установить пакет 0.05, думал, библиотеки не сильно отличаются:

dpkg --force-all -i guitarix_0.05.8-1_i386.deb

Однако прога не запускается, пишет:

# guitarix
guitarix: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by guitarix)
xintrea
() автор топика

Э... Я бы сказал что компилятору не нравится синтаксис вашего C++. Есть всего одна вещь которую можно сделать руководствуясь логикой - обновить компилятор. У тебя gcc какой версии? Ещё кстати не помешал бы беглый осмотр исходников на предмет синтаксической ошибки или потерянного заголовка.

KblCb ★★★★★
()
Ответ на: комментарий от KblCb

Я бы сказал что компилятору не нравится синтаксис вашего C++. Есть всего одна вещь которую можно сделать руководствуясь логикой - обновить компилятор. У тебя gcc какой версии?

В логе привел:

Checking for compiler version            : ok 4.3.2

Есть еще и 4.1, могу выбирать его командами:

export CC=/usr/bin/gcc-4.1
export CXX=/usr/bin/g++-4.1

но с ним сразу ошибка появляется, что неправильный флаг "-std=c++0x".



Ещё кстати не помешал бы беглый осмотр исходников на предмет синтаксической ошибки или потерянного заголовка.

Интересно, как же релизят программу, которая не собирается из-за синтаксической ошибки или потерянного заголовка??

xintrea
() автор топика
Ответ на: комментарий от KblCb

Походу, затыкается в gx_main_interface.h на таких строчках:

class BaseParameter
{
public:
     enum paramtype { Continuous, floatSwitch, boolSwitch, intEnum };
     string id;
     paramtype p_type;
     union {
          struct {
               float *value;
               float std_value;
               float lower;
               float upper;
               float step;
          } f;
          struct {
               bool *value;
               bool std_value;
          } b;
          struct {
               int *value;
               int std_value;
          } i;
     };

     virtual string group() const;
     virtual string name() const;

ТУТ->BaseParameter(string i, float *pv, float sv, float l, float u, float s):
          id(i),
          p_type(Continuous),
          f{pv,sv,l,u,s}
     {}

     BaseParameter(string i, float *pv):
          id(i),
          p_type(floatSwitch),
          f{pv,0}
     {}

     BaseParameter(string i, bool *pv, bool sv):
          id(i),
          p_type(boolSwitch),
          b{pv,sv}
     {}

     BaseParameter(string idp, int *pv, int sv):
          id(idp),
          p_type(intEnum),
          i{pv,sv}
     {}

};

Понакручено конечно много, но компилер вроде дожен прожевать.

xintrea
() автор топика
Ответ на: комментарий от KblCb

В общем, не нравится компилеру заполнение структуры:

f{pv,sv,l,u,s}

говорит, что надо круглые скобки в этом месте использовать. Но это же не передача аргумента базовому классу, а именно заполнение структуры. Интересно, каким же компилером аффторы пользуются?

xintrea
() автор топика
Ответ на: комментарий от xintrea

Попробуй gcc 4.4.3. У меня gcc 4.3.2 сегфолтился на коде написанном на boost'е. Предвижу вопрос «где же мне его взять в дебе?» и сразу отвечу: не знаю.

KblCb ★★★★★
()

Итого gcc 4.4.3 решает. Только что собрал. В принципе могу кинуться в тебя слакопакетом: распакуешь его в /usr/local и будет тебе счастье (если зависимости удовлетворишь). Вообще это не кошерно даже в слаке, но судя по приведённому тобой логу ты так и собирался сделать.

KblCb ★★★★★
()
Ответ на: комментарий от KblCb

> Итого gcc 4.4.3 решает. Только что собрал. В принципе могу кинуться в тебя слакопакетом: распакуешь его в /usr/local и будет тебе счастье (если зависимости удовлетворишь). Вообще это не кошерно даже в слаке, но судя по приведённому тобой логу ты так и собирался сделать.

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

Кинь на мыло xintrea [сцоббакка] gmail.com, попробую впихнуть.

Заранее спасибо.

xintrea
() автор топика
Ответ на: комментарий от KblCb

Не, из-под слаки тоже не подошло.

[code]# guitarix
./guitarix: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by ./guitarix)[/code]

Блин выход, один - где-то искать gcc 4.4.3 да поставить так, чтоб основной компилер не задело и пол-системы не обновило.

xintrea
() автор топика

Возможно я скажу глупость, но не попробовать ли пакет для убунту? Терять-то всё равно особо нечего.

Опять же, может просто собрать руками все требуемые зависимостями пакеты? (это я про самый первый вывод о неудовлетворённых зависимостях)

Можно поискать в бэкпортах более свежие версии, если я ничего не путаю.

В любом случае, не стоит откладывать электруху на полку только из-за того, что не получилось воткнуть на систему ту или иную софтину же.

Umart
()
Ответ на: комментарий от xintrea

>неправильный флаг "-std=c++0x"

йоманарод, c++0x даже в 4.5 не полностью поддерживается, какой упоротый требует его для компиляции???

annulen ★★★★★
()
Ответ на: комментарий от Umart

>не попробовать ли пакет для убунту?

бесполезно. он же не обновит libstdc++, зато потянет еще больше новых зависимостей

annulen ★★★★★
()
Ответ на: комментарий от xintrea

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

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

annulen ★★★★★
()
Ответ на: комментарий от annulen

> Но чем тыкать бинарники от разных дистров, разумнее пользоваться бэкпортами

Которых нет

и компиляцией


которая не работает

xintrea
() автор топика
Ответ на: комментарий от xintrea

apt-get install -t lenny-backports gcc
Чтение списков пакетов... Готово
Построение дерева зависимостей
Чтение информации о состоянии... Готово
Следующие пакеты устанавливались автоматически и больше не требуются:
libfreebob0 libgoffice-0-common libiec61883-0 libresid-builder0c2a
gtk2-engines-pixbuf wine-utils libhdf5-serial-1.8.3 liblqr-1-0 bodr
libsidutils0 gtk2-engines libavc1394-0 libwine wine-bin libgoffice-0-4
libwine-gl libsidplay2 python-gmenu libmpcdec6 libboost-python1.40.0
libgdl-1-common libfaad2
Для их удаления используйте 'apt-get autoremove'.
Будут установлены следующие дополнительные пакеты:
binutils cpp cpp-4.4 gcc-4.4 gcc-4.4-base libgcc1 libgomp1
Предлагаемые пакеты:
binutils-doc cpp-doc gcc-4.4-locales gcc-multilib manpages-dev automake1.9
libtool gcc-doc gcc-4.4-multilib libmudflap0-4.4-dev gcc-4.4-doc libgcc1-dbg
libgomp1-dbg libmudflap0-dbg libcloog-ppl0 libppl-c2 libppl7
НОВЫЕ пакеты, которые будут установлены:
cpp-4.4 gcc-4.4 gcc-4.4-base
Пакеты, которые будут обновлены:
binutils cpp gcc libgcc1 libgomp1
обновлено 5, установлено 3 новых пакетов, для удаления отмечено 0 пакетов, и 122
9 пакетов не обновлено.
Необходимо скачать 9787kБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 15,8MB
.
Хотите продолжить [Д/н]?


Ты лжец и тролль

annulen ★★★★★
()
Ответ на: комментарий от annulen

> я не искал, apt-get нашел

У меня не находит. Что у тебя такое подключено в apt, что в lenny-backports есть gcc-4.4, а на офицальном сайте нет?

xintrea
() автор топика
Ответ на: комментарий от xintrea

я все по инструкции делал

сейчас с другой машины

annulen ★★★★★
()

я по сабжу не эксперт, но возможнодлятех же целей подойдет программа ExEf. Читал, что знатная штука

annulen ★★★★★
()

На убунте поставил с сырцов за минут 5. Вот тебе и линукс. Вот тебе и дебиан. Вот тебе и убунта. Думаю, это хорошая пища для размышлений.
Настроек там нефига. 4 ползунка, 2 из которых рабочие. Звук - треш. Обрезается шестоко. Играть боем можно. Высоту нот определить можно. Сами тоны - невозможно. Переборы и вообще единичные струны если и пропускает, то с треском, обрывками и.. даже не похоже на звук, лол.
В общем, закапываем. Такого добра навалом было.

tia
()
Ответ на: комментарий от annulen

> я по сабжу не эксперт, но возможнодлятех же целей подойдет программа ExEf. Читал, что знатная штука

На проверку оказалась фуфелом.

По jack не работает, так что серьезно ее использовать нельзя.

Реалтайм работает только с маленьким размером буфера (128 Byte). Но тогда обработка трещит и щелкает (SBLive5.1). Если буфер сделать больше (1024 Byte) появляется задержка в полсекунды, и играть невозможно. Хотя звук чистый получается.

xintrea
() автор топика
Ответ на: комментарий от tia

Ну, в общем, jackrack меня порадовал, хотя задержечка чуствуется.

Через Jack Control настраиваю Jack на задержку в 5мс (путем уменьшения буфера). Но видимо эти 5мс совсем не те 5мс что в реальном мире, ибо задержка по ощущениям идет в ~0.2 сек (200мс).

Что интересно, у товарища под виндой с ASIO дровами гитарные обработки работают без задержек. Сколько не слушал - задержки не услышал.

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

Оборудование идентичное - C2Duo 3ГГц.

xintrea
() автор топика
Ответ на: комментарий от annulen

> может реалтайм ядро нужно использовать?

В винде обычное ядро и не тормозит. Чем линух хуже? Хочется же человеческого отношения системы к пользователю, а не задрачивания через квест «поставь реалтаймовое ведро».

xintrea
() автор топика
Ответ на: комментарий от annulen

>> Чем линух хуже?

линух лучше. можно загружаться с разными ядрами для разных задач


???

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

Воистину, луноходы потеряли связь с реальностью.

xintrea
() автор топика
Ответ на: комментарий от xintrea

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

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

annulen ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.