每次在編譯各類第三方庫的時候都會碰到很多問題,基本上都是通過google解決,其實簡單反思一下就會發現是對於系統了解的不夠,對於各類標準也是了解甚少。所以一而再再而三發生的問題其實是可以盡量去避免的。
cmake也許是最常用的跨平台編譯組織工具了,像我在中也已經提到過的,首先得學會自己看以及這些檔案中的巨集定義,指令含義等.其次是要明白針對不同的專案,需要哪些型別的庫,以及對應的庫的版本都是多少.
rm -f cmakecache.txt
export ilmbase_root=/usr/
export openexr_root=/usr/
export boost_root=/usr/lib/x86_64-linux-gnu/
export glfw3_root=/usr/
export blosc_root=/usr/local/include/
export cppunit_root=/usr/
export tbb_root=/usr/
cmake \
-d python_library=/usr/lib/x86_64-linux-gnu/libpython2.7.so \
-d python_include_dir=/usr/include/python2.7 \
-d cmake_cxx_flags=-std=c++11 \
-d minimum_boost_version=1.52 \
-d ilmbase_namespace_versioning=off \
-d openexr_namespace_versioning=off \
-d use_glfw3=on \
-d blosc_use_static_libs=on \
-d blosc_blosc_library=/usr/local/lib/libblosc.so \
-d glfw3_glfw_library=/usr/lib/x86_64-linux-gnu/libglfw.so \
-d ilmbase_half_library=/usr/lib/x86_64-linux-gnu/libhalf.so \
-d ilmbase_iex_library=/usr/lib/x86_64-linux-gnu/libiex.so \
-d ilmbase_ilmthread_library=/usr/lib/x86_64-linux-gnu/libilmthread.so \
-d openexr_ilmimf_library=/usr/lib/x86_64-linux-gnu/libilmimf.so \
-d tbb_library_path=/usr/lib/x86_64-linux-gnu \
-d tbb_tbb_library=/usr/lib/x86_64-linux-gnu/libtbb.so \
-d tbb_tbbmalloc_library=/usr/lib/x86_64-linux-gnu/libtbbmalloc.so \
-d cmake_install_prefix=/usr/local \
..
以上是乙個最近的的編譯檔案,其中有很多要調整的部分,最後還是借助qt的ide進行編譯,有很多自定義的變數通過set寫在cmakelists.txt中.
在編譯鏈結第三方庫的時候,忘記了這個庫還依賴與另外乙個庫,而且這個庫是需要自己引入的.在當時收到的報錯資訊是:
/usr/bin/ld: /tmp/cckvyv4m.o: undefined reference to symbol '_zn4half5_elute'
//usr/lib/x86_64-linux-gnu/libhalf.so.12: error adding symbols: dso missing from command line
collect2: error: ld returned 1 exit status
這是表示我們的編譯器找不到libhalf這個庫1
,所以我們需要額外去引入這個庫,才能使得編譯順利進行.
dso為dynamic shared object, 或者換句話說是shared library, 所以如果這個缺少的話,說明是動態鏈結庫沒有鏈結上,所以我們需要手動去額外鏈結.
> ↩
caffe編譯問題彙總
每次編譯caffe出現的問題基本都不一樣,在不同的系統和硬體平台上都會出現不一樣的問題,這裡就把每次編譯出現的問題總結一下。一看就知道是opencv庫出現問題,這裡是缺少了opencv imgcodecs庫,在makefile檔案中的 libraries opencv core opencv hig...
Makefile編譯問題彙總
最近使用makefile編譯遇到了些問題,反覆地排查了4天多,才解決,要處理的問題很簡單,就是把一堆.c檔案編譯打包成.so,然後再把.so和demo.o打包成可執行檔案,遇到了下面 三個問題,總結一下 1 問題描述在這裡 原因 在生成可執行檔案的時候,加入了 shared引數,這時生成的並不是可執...
編譯核心遇到的問題彙總
ubutnu12.04編譯android4.2 error while loading shared libraries libz.so.1 ubutnu12.04編譯android4.2 error while loading shared libraries libz.so.1 cannot o...