LINUX.ORG.RU

неопределённая ссылка на символ «gzerror»

 


0

1

Третий день пытаюсь собрать пакет qtiplot, уже казалось бы преодолел все препятствия, но в самом конце появилась вот такая ошибка

/usr/bin/ld: ../tmp/qtiplot/minigzip.o: неопределённая ссылка на символ «gzerror»
/usr/local/lib/libz.so.1: error adding symbols: DSO missing from command line
и побороть ее я не в силах. Может кто знает что это за зверь? Гугль не дает ответа. Говорят что надо добавить ключ -lz, но куда его добавлять не понимаю. Этот пакет есть в репах, но на сайте разработчика указано, что Pro версия намного более продвинутая и ее можно либо купить, либо скомпилить самому, что я и пытаюсь безуспешно сделать. Хотя может это просто замануха, а файл minigzip.c, используемый при компиляции, просто специально битый.

★★★★

По идее ″-lz″ нужно добавлять в Makefile, но он, вроде как, в вашем случае, генерится с помощью qmake. Я не знаю, насколько он у вас там страшный получается, может у вас получится найти в нём нужное место...

P.S. Файл minigzip.c вобще не причём, ошибка на этапе линковки это уже косяк в make-файлах, а не в Си-коде.

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

Там косяков очень много. Я честно просидел два полных дня и преодолевал косяки шаг за шагом. Даже два патча нашел. Вот эта проблема - последняя (я думаю). В инете я нашел всего одного человека, который смог скомпилить qtiplot - см здесь. Я пытался повторить - не получается, половина ссылок уже мертва. Более того, я ни разу не компилил, а всегда находил скомпилированный deb пакет, да и программист из меня такой же, как балерон. На каком то форуме нашел совет вписать -lz в файл qtiplot.pro. Вот его содержание

TEMPLATE = subdirs 

SUBDIRS = fitPlugins \
	    3rdparty/qwt \
	    3rdparty/qwtplot3d \
            qtiplot 
Повторяю, что не программист и поэтому я пробовал вставлять -lz везде где можно, но все безрезультатно. Был еще совет такой
LD_LIBRARY_PATH=/usr/local/lib
export LIBRARY_PATH=/opt/lib/
Не помогает. Раз Makefile генерится qmake, то может быть как то ему указать этот ключ, но как? Про это DSO написана туева хуча всего, но для программистов C, и я не понимаю о чем речь.

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

Что по вашей ссылке, что в генту ебилде https://gitweb.gentoo.org/repo/gentoo.git/tree/sci-visualization/qtiplot/qtip... эту библиотеку указывают в файле build.conf в строке SYS_LIBS, только у гентушников libquazip, а не libzip. В файле qtiplot.pro библиотеки не указываются.

У вас в build.conf что в SYS_LIBS?

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

В разделе System specific configuration имеется следующее

# Global include path which is always added at the end of the INCLUDEPATH
SYS_INCLUDEPATH = /opt/local/include
# Global lib path and libs which is ls always added at the end of LIBS
SYS_LIBS = -L/opt/local/lib

Точно, я и не заметил. У того, кто смог собрать стоят ключи -lGLU -lz. Сейчас попробую с этими ключами.

rustamych ★★★★
() автор топика
Последнее исправление: rustamych (всего исправлений: 1)
Ответ на: комментарий от mky

Эта ошибка пропала (я включил оба -lGLU -lz, с одним -lGLU ошибка остается), но теперь другая куча ошибок, с которой вообще непонятно что делать. Такое чувство, что не смогу я его победить :(. Почему-то спойлер не работает.

../tmp/qtiplot/GriddingDialog.o: In function `GriddingDialog::accept()':
GriddingDialog.cpp:(.text+0x505): undefined reference to `ap::amalloc(unsigned long, unsigned long)'
GriddingDialog.cpp:(.text+0x61d): undefined reference to `idwcalc(idwinterpolant&, ap::template_1d_array<double, true> const&)'
GriddingDialog.cpp:(.text+0x6ac): undefined reference to `ap::afree(void*)'
GriddingDialog.cpp:(.text+0x6bd): undefined reference to `ap::afree(void*)'
GriddingDialog.cpp:(.text+0x6ce): undefined reference to `ap::afree(void*)'
GriddingDialog.cpp:(.text+0x6f0): undefined reference to `ap::afree(void*)'
GriddingDialog.cpp:(.text+0x701): undefined reference to `ap::afree(void*)'
../tmp/qtiplot/GriddingDialog.o:GriddingDialog.cpp:(.text+0x712): more undefined references to `ap::afree(void*)' follow
../tmp/qtiplot/GriddingDialog.o: In function `GriddingDialog::accept()':
GriddingDialog.cpp:(.text+0x847): undefined reference to `idwbuildnoisy(ap::template_2d_array<double, true> const&, int, int, int, int, int, idwinterpolant&)'
GriddingDialog.cpp:(.text+0x877): undefined reference to `idwbuildmodifiedshepardr(ap::template_2d_array<double, true> const&, int, int, double, idwinterpolant&)'
GriddingDialog.cpp:(.text+0x8d4): undefined reference to `idwbuildmodifiedshepard(ap::template_2d_array<double, true> const&, int, int, int, int, int, idwinterpolant&)'
GriddingDialog.cpp:(.text+0x8ef): undefined reference to `ap::afree(void*)'
GriddingDialog.cpp:(.text+0x911): undefined reference to `ap::afree(void*)'
GriddingDialog.cpp:(.text+0x922): undefined reference to `ap::afree(void*)'
GriddingDialog.cpp:(.text+0x962): undefined reference to `ap::afree(void*)'
GriddingDialog.cpp:(.text+0x989): undefined reference to `ap::afree(void*)'
../tmp/qtiplot/GriddingDialog.o:GriddingDialog.cpp:(.text+0x99f): more undefined references to `ap::afree(void*)' follow
../tmp/qtiplot/GriddingDialog.o: In function `GriddingDialog::preview()':
GriddingDialog.cpp:(.text+0x11ae): undefined reference to `ap::amalloc(unsigned long, unsigned long)'
GriddingDialog.cpp:(.text+0x12fb): undefined reference to `idwcalc(idwinterpolant&, ap::template_1d_array<double, true> const&)'
GriddingDialog.cpp:(.text+0x13cd): undefined reference to `ap::afree(void*)'
GriddingDialog.cpp:(.text+0x13de): undefined reference to `ap::afree(void*)'
GriddingDialog.cpp:(.text+0x13ef): undefined reference to `ap::afree(void*)'
GriddingDialog.cpp:(.text+0x1411): undefined reference to `ap::afree(void*)'
GriddingDialog.cpp:(.text+0x1422): undefined reference to `ap::afree(void*)'
../tmp/qtiplot/GriddingDialog.o:GriddingDialog.cpp:(.text+0x1433): more undefined references to `ap::afree(void*)' follow
../tmp/qtiplot/GriddingDialog.o: In function `GriddingDialog::preview()':
GriddingDialog.cpp:(.text+0x155d): undefined reference to `idwbuildmodifiedshepard(ap::template_2d_array<double, true> const&, int, int, int, int, int, idwinterpolant&)'
GriddingDialog.cpp:(.text+0x1591): undefined reference to `idwbuildmodifiedshepardr(ap::template_2d_array<double, true> const&, int, int, double, idwinterpolant&)'
GriddingDialog.cpp:(.text+0x15e6): undefined reference to `idwbuildnoisy(ap::template_2d_array<double, true> const&, int, int, int, int, int, idwinterpolant&)'
GriddingDialog.cpp:(.text+0x16a8): undefined reference to `ap::afree(void*)'
GriddingDialog.cpp:(.text+0x16ca): undefined reference to `ap::afree(void*)'
GriddingDialog.cpp:(.text+0x1724): undefined reference to `ap::afree(void*)'
GriddingDialog.cpp:(.text+0x173f): undefined reference to `ap::afree(void*)'
GriddingDialog.cpp:(.text+0x1761): undefined reference to `ap::afree(void*)'
../tmp/qtiplot/GriddingDialog.o:GriddingDialog.cpp:(.text+0x1772): more undefined references to `ap::afree(void*)' follow
../tmp/qtiplot/GriddingDialog.o: In function `GriddingDialog::loadDataFromTable()':
GriddingDialog.cpp:(.text+0x1e56): undefined reference to `ap::amalloc(unsigned long, unsigned long)'
../tmp/qtiplot/GriddingDialog.o: In function `GriddingDialog::GriddingDialog(Table*, QString const&, int, QWidget*, QFlags<Qt::WindowType>)':
GriddingDialog.cpp:(.text+0x449e): undefined reference to `ap::afree(void*)'
../tmp/qtiplot/GriddingDialog.o: In function `kdtree::~kdtree()':
GriddingDialog.cpp:(.text._ZN6kdtreeD2Ev[_ZN6kdtreeD5Ev]+0x16): undefined reference to `ap::afree(void*)'
GriddingDialog.cpp:(.text._ZN6kdtreeD2Ev[_ZN6kdtreeD5Ev]+0x27): undefined reference to `ap::afree(void*)'
GriddingDialog.cpp:(.text._ZN6kdtreeD2Ev[_ZN6kdtreeD5Ev]+0x49): undefined reference to `ap::afree(void*)'
GriddingDialog.cpp:(.text._ZN6kdtreeD2Ev[_ZN6kdtreeD5Ev]+0x5a): undefined reference to `ap::afree(void*)'
../tmp/qtiplot/GriddingDialog.o:GriddingDialog.cpp:(.text._ZN6kdtreeD2Ev[_ZN6kdtreeD5Ev]+0x7c): more undefined references to `ap::afree(void*)' follow
../tmp/qtiplot/MatrixModel.o: In function `MatrixModel::resample(int, int, int)':
MatrixModel.cpp:(.text+0x494e): undefined reference to `ap::amalloc(unsigned long, unsigned long)'
MatrixModel.cpp:(.text+0x49a4): undefined reference to `ap::afree(void*)'
MatrixModel.cpp:(.text+0x49f9): undefined reference to `ap::amalloc(unsigned long, unsigned long)'
MatrixModel.cpp:(.text+0x4b1d): undefined reference to `spline2dresamplebicubic(ap::template_2d_array<double, true> const&, int, int, ap::template_2d_array<double, true>&, int, int)'
MatrixModel.cpp:(.text+0x4bc2): undefined reference to `ap::afree(void*)'
MatrixModel.cpp:(.text+0x4bd1): undefined reference to `ap::afree(void*)'
MatrixModel.cpp:(.text+0x4c17): undefined reference to `spline2dresamplebilinear(ap::template_2d_array<double, true> const&, int, int, ap::template_2d_array<double, true>&, int, int)'
MatrixModel.cpp:(.text+0x4c43): undefined reference to `ap::afree(void*)'
MatrixModel.cpp:(.text+0x4c5d): undefined reference to `ap::afree(void*)'
collect2: error: ld returned 1 exit status
Makefile:677: ошибка выполнения рецепта для цели «qtiplot»
make[1]: *** [qtiplot] Ошибка 1
rustamych ★★★★
() автор топика
Последнее исправление: rustamych (всего исправлений: 1)
Ответ на: комментарий от rustamych

Спойлер только в новостях.

Эти ошибки судя по всему касаются alglib. Вы его компилировали или готовый установили? Что у вас в ALGLIB_LIBS? И какой он у вас версии, потому что судя по этому пачту https://sources.debian.org/patches/qtiplot/0.9.8.9-9/adopt_to_alglib3.patch/ «ванильные» исходники расчитаны на версию ниже третьей.

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

Я его все таки победил. Я взял файл build.conf по той ссылке, что я привел выше, и исправил немного путь к tamuanova, и компиляция прошла успешно. Но моему разочарованию нет предела. Это в точности такая же прога как и репах убунты (версия svn 2288), хотя на сайте разработчика написано, что версию Pro можно либо купить, либо скомпилить самому. Врет гад. Но покупать принципиально не буду, 20 евро не жалко, но не буду. Потратил три дня и впустую. Лучше даже перейду вообще на форк scidavis, там хоть разговором о Pro нету.

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

Спасибо большое за помощь, мир не без добрых людей. Все началось собственно с того, что мне понадобилось вставить подпись к вертикальной оси в латехе (нужна была каллиграфия). Там есть возможность вставить латех формулу. Но надо было повернуть на 90 градусов. В латехе такая возможность есть, но в qtiplot нет возможности исправить преамбулу. На сайте есть страничка, где объясняется, что можно исправить преамбулу и картинки там другие. Вот я и подумал, что это есть в Pro версии. Есть правда возможность написать все как в латехе, а потом сохранить в формате tex. На самом деле он сохраняет в формате tikz, что неплохо, поскольку открываешь с помощью qtikz и ву я ля имееш качественный pdf. Но опять заковыка. Этот конвертер не поддерживает изменение размера фонтов подписей. Изменил ты в qtiplot фонт осей, а в полученном tikz файле этого нет.

rustamych ★★★★
() автор топика

процесс сборки

добрый день

а подробнее? версии, патчи, установленные пакеты/библиотеки итд что бы не засорять форум, можно текстом/архивом/итд - залить куда ни-будь на шару

спасибо

sunjob ★★★★★
()
Ответ на: процесс сборки от sunjob

А смысл? Получившийся qtiplot идентичен тому что в репозитории. Хотя я не прав, смысл наверное есть. Судя по сайту этой проги автор метит сделать этот продукт коммерческим и может в будущем совсем прикрыть бесплатную часть, тогда собирать самому из сырцов. Поэтому выложу где нить, типа яндекса с комментариями, надо только вспомнить какие патчи делал. Прога, в принципе, работает нормально, бесит отсутствие undo - ctrl z, но в собранной версии тоже самое. Там есть классный конвертер в tex, он делает tikz файл, который можно поправлять без проблем с помощью qtikz и получается в итоге хороший pdf. В преобразовании столбцов тоже не все корректно. Умножить столбец на выбранный элемент того же столбца работает, но поделить уже глючит и умножает только текущий элемент и т.д. Но я пользуюсь. Есть и форк - scidavis, но в нем нет конвертера в tex. Есть еще LabPlot, но собрать его не удалось, а в репах его нет (для ubuntu 16.04).

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

вот и славненько

смысл наверное есть

а то!

а в репах его нет

у «нас» в репах вообще почти ни чего нет... есть слакбилды, но увы, «какчество» их «некоторый писакакателей» нынче, увы, не внушает доверия (постоянно требуется «внушение», «мануальная терапия» и волшебный пендель :о)

с дуру, решил таки, в рамках изучения «пакетников» и «автоматизации сборок» воспользоваться менеджером slpkg, и собрать qtiplot & scidavis из основного «слакбилд-репазитария» - не удалось, куча геммора, нестыковка версий и потраченного времени...

qtiplot - не собирается

scidavis- собирается, с бубном (ручная правка, замена версий итд)

сборка делалась для «slackware 14.2x64», допускаю, что «все силы брошены» на current версию и «там» все собирается без проблем, но как-то не радует, что «ментейнеры» забили на последнюю стабильную версию (напоминает арч)

могу, конечно опшибаться :о)

короче, ДА, описание сборки/патчей - не помешает, выкладывай (можешь там же оставить свои «координаты», для обр. связи)

sunjob ★★★★★
()
Последнее исправление: sunjob (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.