Не удается найти библиотеку ссылок (lNrrdIO) - PullRequest
0 голосов
/ 05 марта 2019

Я пытаюсь установить NrrdIO на Ubuntu 18.04, чтобы запустить Marching Cubes для сегментирования медицинских изображений.Это ссылка, по которой я пытаюсь ее запустить.

http://web.cse.ohio -state.edu / research / graphics / isotable /

Я пытаюсьустановить ijkmcube-v0-3-3.tar, для чего требуется библиотека ITKNrrdIO.a.Я сталкиваюсь с этой ошибкой:

[  7%] Linking CXX executable ijkmcube
/usr/bin/ld: cannot find -lNrrdIO
collect2: error: ld returned 1 exit status
CMakeFiles/ijkmcube.dir/build.make:406: recipe for target 'ijkmcube' failed
make[2]: *** [ijkmcube] Error 1
CMakeFiles/Makefile2:131: recipe for target 'CMakeFiles/ijkmcube.dir/all' failed
make[1]: *** [CMakeFiles/ijkmcube.dir/all] Error 2
Makefile:129: recipe for target 'all' failed
make: *** [all] Error 2

Я установил NrrdIO 1.11.0 и пробовал также с NrrdIO 1.9.0, но во время работы make я по какой-то причине всегда сталкиваюсь с этой ошибкойего не удалось найти.Может кто-нибудь, пожалуйста, помогите?Спасибо

Редактировать:

Я думаю, что это проблема со связыванием, но когда я скопировал файл NrrdIO.a в / usr / bin и изменил символическую ссылку науказывают на это, я получил ошибку следующим образом:

[  7%] Linking CXX executable ijkmcube
collect2: fatal error: cannot find 'ld'
compilation terminated.
CMakeFiles/ijkmcube.dir/build.make:406: recipe for target 'ijkmcube' 
failed
make[2]: *** [ijkmcube] Error 1
CMakeFiles/Makefile2:131: recipe for target ' 
CMakeFiles/ijkmcube.dir/all' failed
make[1]: *** [CMakeFiles/ijkmcube.dir/all] Error 2
Makefile:129: recipe for target 'all' failed
make: *** [all] Error 2

Может кто-нибудь помочь?Спасибо

Редактировать 2

PROJECT(IJKMCUBE)

#---------------------------------------------------------

CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

IF (NOT DEFINED ${IJK_DIR})
 GET_FILENAME_COMPONENT(IJK_ABSOLUTE_PATH "../.." ABSOLUTE)
 SET(IJK_DIR ${IJK_ABSOLUTE_PATH} CACHE PATH "IJK directory")
ENDIF (NOT DEFINED ${IJK_DIR})

SET(CMAKE_INSTALL_PREFIX "${IJK_DIR}/")
SET(LIBRARY_OUTPUT_PATH ${IJK_DIR}/lib CACHE PATH "Library directory")
SET(IJKMCUBE_DIR "src/ijkmcube")
SET(NRRD_LIBDIR "${IJK_DIR}/lib")
SET(IJK_ISOTABLE_DIR "${IJK_DIR}/isotable" CACHE PATH "Isotable 
 directory")

#---------------------------------------------------------

IF (NOT CMAKE_BUILD_TYPE)
 SET (CMAKE_BUILD_TYPE Release CACHE STRING 
   "Default build type: Release" FORCE)
ENDIF (NOT CMAKE_BUILD_TYPE)

INCLUDE_DIRECTORIES("${IJK_DIR}/include")
LINK_DIRECTORIES("${NRRD_LIBDIR}")
LINK_LIBRARIES(expat NrrdIO z)
ADD_DEFINITIONS(-DIJK_ISOTABLE_DIR=\"${IJK_ISOTABLE_DIR}\")

ADD_EXECUTABLE(ijkmcube ijkmcube_main.cxx ijkmcubeIO.cxx ijkmcube.cxx 
                    ijkmcube_datastruct.cxx ijkmcube_sub.cxx 
                    ijkmcube_extract.cxx ijkmcube_util.cxx 
                    ijksnapmc.cxx 
                    ijktable.cxx ijktable_poly.cxx ijktable_ambig.cxx
                    ijkoctree.cxx ijkxitIO.cxx)

 ADD_LIBRARY(ijkmcubeL STATIC EXCLUDE_FROM_ALL ijkmcubeIO.cxx 
             ijkmcube.cxx ijkmcube_datastruct.cxx ijkmcube_sub.cxx 
             ijkmcube_extract.cxx ijkmcube_util.cxx ijksnapmc.cxx 
             ijktable.cxx ijkoctree.cxx ijkxitIO.cxx)
SET_TARGET_PROPERTIES(ijkmcubeL PROPERTIES OUTPUT_NAME ijkmcube)
ADD_CUSTOM_TARGET(lib DEPENDS ijkmcubeL)

SET(CMAKE_INSTALL_PREFIX ${IJK_DIR})
INSTALL(TARGETS ijkmcube DESTINATION "bin/linux")

ADD_CUSTOM_TARGET(tar WORKING_DIRECTORY ../.. COMMAND tar cvfh 
${IJKMCUBE_DIR}/ijkmcube.tar ${IJKMCUBE_DIR}/README 
${IJKMCUBE_DIR}/INSTALL ${IJKMCUBE_DIR}/RELEASE_NOTES 
${IJKMCUBE_DIR}/*.cxx ${IJKMCUBE_DIR}/*.h ${IJKMCUBE_DIR}/*.txx 
${IJKMCUBE_DIR}/CMakeLists.txt ${IJKMCUBE_DIR}/man/* 
${IJKMCUBE_DIR}/ijkmcube_doxygen.config)

ADD_CUSTOM_TARGET(doc COMMAND doxygen ijkmcube_doxygen.config)

РЕШЕНО

Цыварев решил это, файл libNrrdIO.a должен бытьскопировано в / usr / lib /.Обратитесь к комментариям для точного решения

1 Ответ

0 голосов
/ 13 марта 2019

Этот ответ дал @Tsyvarev:

Делая ссылку с именем ld, вы удаляете исходный компоновщик (ld).Без компоновщика вы определенно не сможете построить ни одну библиотеку.Вам нужно создать ссылку с именем lNrrdIO.a, чтобы она указывала на фактическое расположение библиотеки: sudo ln -sfn /home/subham/Downloads/NrrdIO-1.9.0-src/lNrrdIO.a lNrrdIO.a (запустите эту команду из каталога /usr/lib).И восстановить исходный /usr/bin/ld файл.

...