编译问题汇总

每次在编译各类第三方库的时候都会碰到很多问题,基本上都是通过Google解决,其实简单反思一下就会发现是对于系统了解的不够,对于各类标准也是了解甚少。所以一而再再而三发生的问题其实是可以尽量去避免的。

CMake编译系统

Cmake也许是最常用的跨平台编译组织工具了,像我在{% post_link "Cmake工程例子" 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

DSO为dynamic shared object, 或者换句话说是shared library, 所以如果这个缺少的话,说明是动态链接库没有链接上,所以我们需要手动去额外链接.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值