1前提
已經安裝了ancoda ,這個是個巨坑,裝了aconda嚴重影響后面安裝
2-0 裝eigen3
2-1裝ceres
編譯ceres時:error: ‘integer_sequence’ is not a member of ‘std‘錯誤
https://blog.csdn.net/qq_41586768/article/details/107541917
按照上安裝的ceres庫版本,以及網上大多數教程安裝的版本都會和eigen3(3.3.7)有沖突,編譯時會報如下錯誤:
這里換成1.14.0版本的ceres問題得以解決
2-2在編譯時對libtiff4.0的未定義引用(Ubuntu 16.04)
5/../../../x86_64-linux-gnu/libfreeimage.so: undefined reference to `TIFFReadEncodedStrip@LIBTIFF_4.0' /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libfreeimage.so: undefined reference to `TIFFReadEXIFDirectory@LIBTIFF_4.0' /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libfreeimage.so: undefined reference to `TIFFFieldReadCount@LIBTIFF_4.0' /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libfreeimage.so: undefined reference to `TIFFSetTagExtender@LIBTIFF_4.0' /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libfreeimage.so: undefined reference to `TIFFCurrentDirectory@LIBTIFF_4.0' /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libfreeimage.so: undefined reference to `TIFFReadTile@LIBTIFF_4.0' /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libfreeimage.so: undefined reference to `TIFFSetDirectory@LIBTIFF_4.0' /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libfreeimage.so: undefined reference to `TIFFClientOpen@LIBTIFF_4.0'
最新更新:
根本不是什么5。0和4。0的本版問題,是因為aconda環境中的libtiff干擾了ubutu1604本身的libtiff,導致編譯出問題。
1要么就先不要裝acoda
2裝了acoda就先從環境中移除路徑重新編譯
- 2-1 把aconda的文件夾名字隨便改下,例如隨便加個字母這樣系統就找不到了
- 2-2 可以在系統路徑暫時刪除aconda的路徑,編譯完
-
先把保存一份
bashrc
然后修改去掉aconda的路徑:
sudo gedit ~/.bashrc
(或者雙擊直接修改)然后把 最后 Anaconda 的路徑前面加 # 給注釋掉:
# export PATH=/path/to/anaconda/bin:$PATH
然后:
source ~/.bashrc
還不行的話,再次基礎上執行后面(我還沒有嘗試,我直接重新裝了系統)
如果尚未安裝所需的軟件包,請安裝它。如果具有所需的文件,但是路徑不正確,則可以按照以下步驟進行操作。
就手動找到當前系統所有的libtiff.so路徑
locate libtiff.so
(如果aconda還在系統中,這里會有很多個記錄)
找到依賴文件后,下一步是用於替換文件其他位置的庫文件的路徑
找到依賴庫
ldd /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libfreeimage.so
可以看到實際依賴的庫的位置
手動逐個替換庫(如果有多個位置的話),直到可以用的那個成功
您可以看到要替換的路徑。有時系統中有多個可用項目,如果不確定要使用哪個項目,則可以嘗試一下,直到找到正確的文件為止。
要創建軟鏈接,源文件位於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://stackoom.com/question/34XM2/CMake-%E9%93%BE%E6%8E%A5libfreeimage-libtiff%E6%97%B6%E5%87%BA%E9%94%99
舊有的記錄:
https://github.com/colmap/colmap/issues/188
需要的是4.0但是最新的是5.0
手動下載4.0源碼編譯
安裝好的
重新編譯colmap工程
其他說明:
整個問題就是,因為提前裝了anaconda3,他的路徑和庫干擾了系統自身默認的庫和路徑,導致安裝編譯的時候找庫有問題,所以要去掉anaconda3的影響。
1 要么直接把anaconda3名字改了,導致找不到這個,也就不再用里面的配置。
完啦了再改回來
2 要么注銷了aconda環境,安裝完再回來(這個比較復雜,不建議)
3 camke的時候直接指定用系統的庫而不是去adonda下面找(測試 cmake不再報錯,但是后面make回報錯)
SET(CMAKE_PREFIX_PATH "/usr/lib/x86_64-linux-gnu/cmake")
`TIFFReadDirectory@LIBTIFF_4.0‘未定義的引用
“undefined reference to `TIFFReadRGBAStrip@LIBTIFF_4.0'” 問題解決方法
去libtiff管網上下載 tiff-4.0.4.tar.gz壓縮包安裝即可。安裝方法如下:
解壓tar -zxvf tiff-4.0.4.tar.gz
進入tiff目錄
./configure
make
make install
網上有介紹通過sudo apt-get install libtiff4-dev安裝,但是運行該命令后,提示libtiff4-dev已經被libtiff5-dev替代,只可安裝libtiff5-dev,安裝后並未解決問題。
解決方法:
在安裝與tiff有關的包,如opencv時候,把conda的系統引用從系統路徑里面消除掉,然后再進行安裝.
ctrl+h 顯示隱藏
先把保存一份 bashrc
然后修改去掉aconda的路徑:
sudo gedit ~/.bashrc
(或者雙擊直接修改)
然后把 最后 Anaconda 的路徑前面加 # 給注釋掉:
# export PATH=/path/to/anaconda/bin:$PATH
然后:
source ~/.bashrc
