Как зафиксировать поврежденные пути Компоновщика?

Я пытаюсь создать repo на своей Ubuntu 16.04 из источника, и все идет прекрасное, пока она не достигает файлов, связанных с OpenCV.

Я получаю следующую ошибку:

/usr/bin/ld: cannot find -lIlmImf
/usr/bin/ld: cannot find -llibjasper
/usr/bin/ld: cannot find -llibtiff
/usr/bin/ld: cannot find -llibpng
/usr/bin/ld: cannot find -llibjpeg
/usr/bin/ld: cannot find -lzlib
collect2: error: ld returned 1 exit status
Makefile:305: recipe for target 'lib/libmxnet.so' failed
make: *** [lib/libmxnet.so] Error 1

Таким образом, я пытался проверить то, что на самом деле делает компоновщик. Я ввел

ld - llibjpeg --verbose 

и добрался

attempt to open //usr/local/lib/x86_64-linux-gnu/liblibjpeg.so failed
attempt to open //usr/local/lib/x86_64-linux-gnu/liblibjpeg.a failed
attempt to open //lib/x86_64-linux-gnu/liblibjpeg.so failed
attempt to open //lib/x86_64-linux-gnu/liblibjpeg.a failed
attempt to open //usr/lib/x86_64-linux-gnu/liblibjpeg.so failed
attempt to open //usr/lib/x86_64-linux-gnu/liblibjpeg.a failed
attempt to open //usr/local/lib64/liblibjpeg.so failed
attempt to open //usr/local/lib64/liblibjpeg.a failed
attempt to open //lib64/liblibjpeg.so failed
attempt to open //lib64/liblibjpeg.a failed
attempt to open //usr/lib64/liblibjpeg.so failed
attempt to open //usr/lib64/liblibjpeg.a failed
attempt to open //usr/local/lib/liblibjpeg.so failed
attempt to open //usr/local/lib/liblibjpeg.a failed
attempt to open //lib/liblibjpeg.so failed
attempt to open //lib/liblibjpeg.a failed
attempt to open //usr/lib/liblibjpeg.so failed
attempt to open //usr/lib/liblibjpeg.a failed
attempt to open //usr/x86_64-linux-gnu/lib64/liblibjpeg.so failed
attempt to open //usr/x86_64-linux-gnu/lib64/liblibjpeg.a failed
attempt to open //usr/x86_64-linux-gnu/lib/liblibjpeg.so failed
attempt to open //usr/x86_64-linux-gnu/lib/liblibjpeg.a failed
ld: cannot find -llibjpeg

Как мы видим, компоновщик не ищет правильный файл! С другой стороны, если я ввожу

ld - ljpeg --verbose 

Я вижу это:

attempt to open //usr/local/lib/x86_64-linux-gnu/libjpeg.so failed
attempt to open //usr/local/lib/x86_64-linux-gnu/libjpeg.a failed
attempt to open //lib/x86_64-linux-gnu/libjpeg.so failed
attempt to open //lib/x86_64-linux-gnu/libjpeg.a failed
attempt to open //usr/lib/x86_64-linux-gnu/libjpeg.so succeeded
-ljpeg (//usr/lib/x86_64-linux-gnu/libjpeg.so)
libc.so.6 needed by //usr/lib/x86_64-linux-gnu/libjpeg.so
found libc.so.6 at //lib/x86_64-linux-gnu/libc.so.6
ld-linux-x86-64.so.2 needed by //lib/x86_64-linux-gnu/libc.so.6
found ld-linux-x86-64.so.2 at //lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
ld: warning: cannot find entry symbol _start; not setting start address

Так libjpeg библиотека IS там, компоновщик просто ищет неправильный файл.

В make-файле я имею

ifeq ($(USE_OPENCV), 1)
        CFLAGS += -DMXNET_USE_OPENCV=1 $(shell pkg-config --cflags opencv)
        LDFLAGS += $(filter-out -lopencv_ts, $(shell pkg-config --libs opencv))
        BIN += bin/im2rec

И пути обозначаются сценариями оболочки pkg-config --cflags opencv и pkg-config --libs opencv корректны.

Я был бы благодарен за любую справку с фиксацией.

Править: Я работаю make uninstall в исходной папке OpenCV. После этого сборка передала успешно. Очень странный, кажется, что OpenCV испортил символьные ссылки. Я играл с opencv.pc файлами ранее, и пути отсутствовали или неправильно.

2
задан 13 February 2018 в 00:58

1 ответ

Я не могу понять, где Вы получили проблему. Я скомпилировал его успешно (даже без sudo apt-get build-dep libopencv-dev):

wget https://github.com/opencv/opencv/archive/2.4.13.5.zip
unzip 2.4.13.5.zip
cd opencv-2.4.13.5
mkdir build
cd build
cmake ..
make -j16
sudo make install

И затем pkg-config --libs opencv показывает следующее:

- L/usr/local/lib-lopencv_calib3d-lopencv_contrib-lopencv_core-lopencv_features2d-lopencv_flann-lopencv_gpu-lopencv_highg ui-lopencv_imgproc-lopencv_legacy-lopencv_ml-lopencv_nonfree-lopencv_objdetect-lopencv_ocl-lopencv_photo-lopencv_stitc hing-lopencv_superres-lopencv_ts-lopencv_video-lopencv_videostab-lrt-lpthread-lm-ldl

и pkg-config --cflags opencv

- I/usr/local/include/opencv-I/usr/local/include

0
ответ дан 2 December 2019 в 08:04

Другие вопросы по тегам:

Похожие вопросы: