找不到链接库(lNrrdIO) [英] Cannot find a link library (lNrrdIO)

查看:136
本文介绍了找不到链接库(lNrrdIO)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在Ubuntu 18.04上安装NrrdIO,以运行Marching Cubes来分割医学图像.这是我尝试运行它的链接.

I am trying to install NrrdIO on Ubuntu 18.04, to run Marching Cubes to segment medical images. This is the link from which I'm trying to run it.

http://web.cse.ohio-state.edu/研究/图形/稳定/

我正在尝试安装ijkmcube-v0-3-3.tar,它需要ITKNrrdIO.a库.我遇到了这个错误:

I'm trying to install ijkmcube-v0-3-3.tar, which requires the ITKNrrdIO.a library. I'm running into this error:

[  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,但是在运行时 制作 我总是会遇到此错误,由于某种原因,它找不到lNrrdIO.有人可以帮忙吗? 谢谢

I've installed NrrdIO 1.11.0, and tried with NrrdIO 1.9.0 as well, but while running make I always run into this error, for some reason its not able to find lNrrdIO . Can someone please help? Thanks

我认为链接存在问题,但是当我将NrrdIO.a文件复制到/usr/bin并修改了符号链接以指向它时,出现如下错误:

I think its a problem with the linking, but when I copied the NrrdIO.a file to /usr/bin and modified the symbolic link to point to it, I got an error as follows:

[  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)

已解决

Tsyvarev解决了该问题,必须将libNrrdIO.a文件复制到/usr/lib/.请参阅评论以获取确切的解决方案

Tsyvarev solved it, the libNrrdIO.a file has to be copied to /usr/lib/. Refer to comments for the exact solution

推荐答案

此答案由@Tsyvarev给出:

This answer was given by @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文件.

By making a link named ld you are removing the original linker (ld). Without the linker you definitely cannot build any library. What you need is to make a link named lNrrdIO.a, so it will point to the actual library location: sudo ln -sfn /home/subham/Downloads/NrrdIO-1.9.0-src/lNrrdIO.a lNrrdIO.a (run this command from /usr/lib directory). And restore original /usr/bin/ld file.

这篇关于找不到链接库(lNrrdIO)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆