Перш ніж почати, я хотів би зазначити, що насправді існує дуже схоже (напевно, абсолютно ідентичне) питання . Однак я не змогла вирішити свою проблему, дивлячись на прийняті відповіді.
Я дотримувався вказівок цього веб-сайту щодо встановлення OpenCV3 на Ubuntu 16.04. Я дійшов до того, що я спробував скласти програму тестування (розділ 6) з g ++. Компіляція повертає це:
/usr/bin/ld: warning: libicui18n.so.58, needed by //home/raggot/anaconda3/lib/libQt5Core.so.5, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libicuuc.so.58, needed by //home/raggot/anaconda3/lib/libQt5Core.so.5, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libicudata.so.58, needed by //home/raggot/anaconda3/lib/libQt5Core.so.5, not found (try using -rpath or -rpath-link)
//home/raggot/anaconda3/lib/libQt5Core.so.5: undefined reference to `u_errorName_58'
//home/raggot/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucal_setMillis_58'
//home/raggot/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucnv_getAlias_58'
//home/raggot/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucal_inDaylightTime_58'
//home/raggot/anaconda3/lib/libQt5Core.so.5: undefined reference to `u_strToLower_58'
//home/raggot/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucnv_getStandardName_58'
//home/raggot/anaconda3/lib/libQt5Core.so.5: undefined reference to `u_strToUpper_58'
//home/raggot/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucnv_setSubstChars_58'
//home/raggot/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucnv_getMaxCharSize_58'
//home/raggot/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucal_getTimeZoneDisplayName_58'
//home/raggot/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucnv_fromUnicode_58'
//home/raggot/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucnv_open_58'
//home/raggot/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucnv_getDefaultName_58'
//home/raggot/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucal_getDefaultTimeZone_58'
//home/raggot/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucal_clone_58'
//home/raggot/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucal_getDSTSavings_58'
//home/raggot/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucol_strcoll_58'
//home/raggot/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucnv_close_58'
//home/raggot/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucnv_countAvailable_58'
//home/raggot/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucal_openCountryTimeZones_58'
//home/raggot/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucol_open_58'
//home/raggot/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucnv_compareNames_58'
//home/raggot/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucal_close_58'
//home/raggot/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucnv_getAvailableName_58'
//home/raggot/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucal_openTimeZoneIDEnumeration_58'
//home/raggot/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucal_open_58'
//home/raggot/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucol_setAttribute_58'
//home/raggot/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucal_openTimeZones_58'
//home/raggot/anaconda3/lib/libQt5Core.so.5: undefined reference to `uenum_close_58'
//home/raggot/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucnv_countAliases_58'
//home/raggot/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucol_close_58'
//home/raggot/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucol_getSortKey_58'
//home/raggot/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucal_get_58'
//home/raggot/anaconda3/lib/libQt5Core.so.5: undefined reference to `uenum_next_58'
//home/raggot/anaconda3/lib/libQt5Core.so.5: undefined reference to `ucnv_toUnicode_58'
collect2: error: ld returned 1 exit status
Намагаючись застосувати цю відповідь до своєї проблеми, я спробував локалізувати шлях установки Qt5 у своїй системі. Я зробив це за допомогою dpkg --listfiles libqt5core5a
. Я додав отриманий шлях до LD_LIBRARY_PATH
, але це не допомогло.
Я спробував перевстановити Qt5 sudo apt install qt5-default
і також встановив, qttools5-dev
але це також не допомогло.
Моя проблема може мати щось спільне з тим, що компілятор використовує бібліотеку анаконди, тоді як я фактично працюю в глобальному середовищі. Ще кілька досліджень показали, що моя установка Qt5, що використовує apt install
версію, має версію 5.5.1, тоді як якщо я набираю, qtdiag
я бачу версію 5.6.2. Це може бути тому, що в якийсь момент я, можливо, встановив і Qt5 під анакондою. Отже, у мене можуть бути 2 установки. Я не знаю, як це перевірити.
Що може бути причиною проблеми?
Редагувати:
Завдяки коментарям я зрозумів, що anaconda3
навіть не слід бути в PATH
першу чергу. З деякими взломами, я виявив, що він був доданий до шляху при вході в систему .bashrc
, ймовірно, тому, що я просив цього під час встановлення Anaconda. Я її зняв і спробував make
ще раз.
Це я зараз бачу (витяг із дуже довгого результату):
/usr/local/lib/libopencv_imgcodecs.so: undefined reference to `jpeg_stdio_dest@LIBJPEG_9.0'
/usr/local/lib/libopencv_highgui.so: undefined reference to `QGraphicsView::staticMetaObject@Qt_5'
/usr/local/lib/libopencv_highgui.so: undefined reference to `QSize::scaled(QSize const&, Qt::AspectRatioMode) const@Qt_5'
/usr/local/lib/libopencv_highgui.so: undefined reference to `QWidget::update()@Qt_5'
/usr/local/lib/libopencv_highgui.so: undefined reference to `QWidget::paintEngine() const@Qt_5'
/usr/local/lib/libopencv_highgui.so: undefined reference to `QAbstractSlider::setMinimum(int)@Qt_5'
/usr/local/lib/libopencv_highgui.so: undefined reference to `QCheckBox::minimumSizeHint() const@Qt_5'
/usr/local/lib/libopencv_highgui.so: undefined reference to `QFileInfo::QFileInfo(QString const&)@Qt_5'
/usr/local/lib/libopencv_highgui.so: undefined reference to `QWidget::hideEvent(QHideEvent*)@Qt_5'
/usr/local/lib/libopencv_highgui.so: undefined reference to `QObject::connectNotify(QMetaMethod const&)@Qt_5'
/usr/local/lib/libopencv_highgui.so: undefined reference to `non-virtual thunk to QBoxLayout::hasHeightForWidth() const@Qt_5'
/usr/local/lib/libopencv_highgui.so: undefined reference to `QWidget::isFullScreen() const@Qt_5'
/usr/local/lib/libopencv_highgui.so: undefined reference to `QWidget::hasHeightForWidth() const@Qt_5'
/usr/local/lib/libopencv_highgui.so: undefined reference to `QPen::QPen(QBrush const&, double, Qt::PenStyle, Qt::PenCapStyle, Qt::PenJoinStyle)@Qt_5'
/usr/local/lib/libopencv_highgui.so: undefined reference to `QStatusBar::showMessage(QString const&, int)@Qt_5'
/usr/local/lib/libopencv_highgui.so: undefined reference to `QObject::customEvent(QEvent*)@Qt_5'
/usr/local/lib/libopencv_highgui.so: undefined reference to `QObject::QObject(QObject*)@Qt_5'
/usr/local/lib/libopencv_highgui.so: undefined reference to `QFont::setLetterSpacing(QFont::SpacingType, double)@Qt_5'
/usr/local/lib/libopencv_highgui.so: undefined reference to `QGraphicsView::dragLeaveEvent(QDragLeaveEvent*)@Qt_5'
/usr/local/lib/libopencv_highgui.so: undefined reference to `typeinfo for QHBoxLayout@Qt_5'
/usr/local/lib/libopencv_highgui.so: undefined reference to `QGLWidget::~QGLWidget()@Qt_5'
Це змушує мене думати, що зараз я просто щось пропускаю PATH
.
Я знайшов , де визначені ці бібліотеки (в моїй установці Qt5) в підпапках /usr/include/x86_64-linux-gnu/qt5/
, а потім додають всі з них PATH
за допомогою export
команд .profile
, а потім запустити source .profile
. Якщо я зараз біжу, echo $PATH
я бачу їх усі на місці.
На жаль, повідомлення про помилку все одно те саме, якщо я запускаю make
команду.
Редагувати №2:
Після додавання всіх вкладених папок , що містять заголовки Qt5 до PATH
, я намагався додати копію PATH
в LD_LIBRARY_PATH
роблячи
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PATH
Знову ж таки, повідомлення про помилку не змінилося за своєю суттю. Я дійсно не розумію, чому компілятор не бачить бібліотеки Qt5.
make
журнал помилок darknet і він не посилається на них (я відредагував своє запитання, щоб поширити інформацію там). Я думаю, що шлях відсутній або неправильний, але я не знаю, як це перевірити чи виправити. Чи є у вас якісь пропозиції щодо того, як я можу дізнатися, який саме шлях я маю надати та де?
find / -name 'libqt*'
. Також ви можете робити «qtdiag» і ldd $(which qtdiag)
.
which qtdiag
привів мене в правильне русло. Відповідь - /home/raggot/anaconda3/bin/qtdiag
де я б очікував чогось на рівні кореня /usr/lib/x86_64-linux-gnu/qt5/
. Це зміцнює моє відчуття make
, дивлячись у неправильному місці. У будь-якому випадку, я намагався додати папки я отримав , використовуючи find
для LD_LIBRARY_PATH
і спробував make
знову, але не пощастило :(