我对CMake非常陌生,现在我正在尝试用它从https://colmap.github.io/编译COLMAP软件。它会编译模块,但在链接时会失败,并出现许多错误,例如
/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libfreeimage.so: undefined reference to `TIFFReadEncodedStrip@LIBTIFF_4.0'我已经通过apt包安装了libfreeimage和libtiff (libfreeimage-dev / libtiff4-dev)。我还显式地将libtiff添加到CMakeLists-Files中的依赖项中,如下所示
find_package(TIFF REQUIRED)和
set(COLMAP_LIBRARIES
...
${FREEIMAGE_LIBRARIES}
${TIFF_LIBRARIES}我是否必须在CMake-File中的某处显式地将库设置为具有动态链接?或者还有什么问题呢?
发布于 2017-07-31 17:01:03
看起来libfreeimage.so正在尝试使用tiff库,例如在您的项目中包含tiff:
find_package( TIFF REQUIRED )
if ( TIFF_FOUND )
include_directories( ${TIFF_INCLUDE_DIRS} )
target_link_libraries( yourprojectname ${TIFF_LIBRARIES} )
endif( TIFF_FOUND )发布于 2018-05-26 01:31:50
如果您已经安装了anaconda,请将其从路径中删除(位于~/.zshc/~/.bashrc中),然后重新启动shell。
sudo apt-get remove libtiff5-dev
sudo apt-get install libtiff5-dev然后,再次尝试制作该项目。
免责声明:适用于我的机器:)
我的配置:Kubuntu16.04 x64
发布于 2019-11-19 14:17:24
我找到了解决它的方法。我希望它能为你工作。
这些问题是由于找不到合适的库文件造成的。
安装所需的软件包如果尚未安装installed.If,则需要的文件已准备就绪,但路径不正确,您可以按照以下步骤进行解决。
ldd /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libfreeimage.so找到依赖文件,它将输出
...
libtiff.so.5 => /usr/lib/x86_64-linux-gnu/libtiff.so.5 (0x00007f81bc0e7000)
...找到依赖文件后,下一步是要用来替换文件的其他位置的库文件的路径。
2.locate libtiff.so
它将输出
...
/home/username/anaconda3/lib/libtiff.so.5
/root/anaconda3/lib/libtiff.so.5 /var/lib/docker/aufs/diff/0faa9badda6fc687ec25d69baecdf401799f90cde729b0bf9fb2ed24dff76e4e/usr/lib/x86_64-linux-gnu/libtiff.so.5
...你可以看到你想要的路径replace.Sometimes在系统中有多个可用的项目,如果你不确定使用哪一个,你可以尝试,直到你找到正确的文件。
要创建软链接,源文件位于ln命令的前面,后跟依赖位置。例如,
ln -sf /var/lib/docker/aufs/diff/07382a150bf28b01a386095ec78a8d2e92fbf670393b3bd16b6f8fbc2d159ae1/usr/lib/x86_64-linux-gnu/libtiff.so.5 /usr/lib/x86_64-linux-gnu/libtiff.so.5 最后重新编译,一般都可以解决。祝好运。
https://stackoverflow.com/questions/45410538
复制相似问题