【已解决】libfreeimage.so:对‘TIFFTileRowSize@LIBTIFF_4.0’未定义的引用

一、问题

编译安装colmap时遇到下面问题

[100%] Linking CXX executable colmap
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘TIFFTileRowSize@LIBTIFF_4.0’未定义的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘TIFFReadDirectory@LIBTIFF_4.0’未定义的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘TIFFFieldTag@LIBTIFF_4.0’未定义的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘TIFFCurrentDirectory@LIBTIFF_4.0’未定义的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘TIFFLastDirectory@LIBTIFF_4.0’未定义的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘TIFFIsTiled@LIBTIFF_4.0’未定义的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘TIFFIsByteSwapped@LIBTIFF_4.0’未定义的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘TIFFDefaultStripSize@LIBTIFF_4.0’未定义的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘TIFFComputeStrip@LIBTIFF_4.0’未定义的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘TIFFReadTile@LIBTIFF_4.0’未定义的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘TIFFWriteScanline@LIBTIFF_4.0’未定义的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘TIFFGetField@LIBTIFF_4.0’未定义的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘TIFFScanlineSize@LIBTIFF_4.0’未定义的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘TIFFFieldWithTag@LIBTIFF_4.0’未定义的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘TIFFTileSize@LIBTIFF_4.0’未定义的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘TIFFWriteDirectory@LIBTIFF_4.0’未定义的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘TIFFFieldName@LIBTIFF_4.0’未定义的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘TIFFFieldReadCount@LIBTIFF_4.0’未定义的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘TIFFGetTagListEntry@LIBTIFF_4.0’未定义的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘TIFFClose@LIBTIFF_4.0’未定义的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘TIFFClientOpen@LIBTIFF_4.0’未定义的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘TIFFSetTagExtender@LIBTIFF_4.0’未定义的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘TIFFGetTagListCount@LIBTIFF_4.0’未定义的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘TIFFGetFieldDefaulted@LIBTIFF_4.0’未定义的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘TIFFSwabArrayOfLong@LIBTIFF_4.0’未定义的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘TIFFFieldPassCount@LIBTIFF_4.0’未定义的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘TIFFSetSubDirectory@LIBTIFF_4.0’未定义的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘TIFFStripSize@LIBTIFF_4.0’未定义的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘TIFFFieldDataType@LIBTIFF_4.0’未定义的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘_TIFFDataSize@LIBTIFF_4.0’未定义的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘TIFFReadRGBAImage@LIBTIFF_4.0’未定义的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘TIFFReadEncodedStrip@LIBTIFF_4.0’未定义的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘TIFFSetField@LIBTIFF_4.0’未定义的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘TIFFMergeFieldInfo@LIBTIFF_4.0’未定义的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘TIFFDataWidth@LIBTIFF_4.0’未定义的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘TIFFSetDirectory@LIBTIFF_4.0’未定义的引用
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libfreeimage.so:对‘TIFFReadEXIFDirectory@LIBTIFF_4.0’未定义的引用
collect2: error: ld returned 1 exit status
src/exe/CMakeFiles/colmap_exe.dir/build.make:280: recipe for target 'src/exe/colmap' failed
make[2]: *** [src/exe/colmap] Error 1
CMakeFiles/Makefile2:892: recipe for target 'src/exe/CMakeFiles/colmap_exe.dir/all' failed
make[1]: *** [src/exe/CMakeFiles/colmap_exe.dir/all] Error 2
Makefile:148: recipe for target 'all' failed
make: *** [all] Error 2

二、尝试解决方法

方法一:更改cmakelist

方法二:更改anaconda环境变量

三、最终解决方法

上述两种方法都无用,最终更换freeimage版本得以成功解决
freeimage版本:3.18.0
libtiff版本:4.0.4

/home/ubuntu/1software/colmap/src/exe/model.cc:867:25: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (int idx = 0; idx < num_parts; ++idx) {
                     ~~~~^~~~~~~~~~~
[100%] Linking CXX executable colmap
[100%] Built target colmap_exe

freeimage安装教程

上一篇:ubunut下安装libmicrohttpd


下一篇:GCC编译和链接过程