zoukankan      html  css  js  c++  java
  • linux中链接错误的时候,快速找到缺失的符号在哪个库中

    编译一个opencv程序,链接的时候出现大量的如下错误:

    /home/admin/opencv/opencv-master/modules/imgproc/src/color_lab.cpp:23: undefined reference to `cv::s
    oftfloat::softfloat(int)'

    softfloat是个什么鬼?应该链接哪个库才行?

    vi /home/admin/opencv/opencv-master/modules/imgproc/src/color_lab.cpp

    看见源代码里面引用了#include "opencv2/core/softfloat.hpp"

    然后softfloat.hpp对应的实现文件是 softfloat.cpp

    那么,只要我找到softfloat.cpp被编译到哪个库文件就行了!

    于是运行:  nm -A lib64/libopencv*.a | grep "softfloat.cpp"

    libopencv_core.a:softfloat.cpp.o:0000000000000000 T _ZNK2cv9softfloatmiERKS0_
    libopencv_core.a:softfloat.cpp.o:0000000000000000 T _ZNK2cv9softfloatmlERKS0_
    libopencv_core.a:softfloat.cpp.o:0000000000000000 T _ZNK2cv9softfloatneERKS0_

    原来是在libopencv_core.a中,命令行中已经加上了这个库,看来是依赖顺序的问题。在gcc命令行最后再加上 -lopencv_core,问题解决。

  • 相关阅读:
    6月16日
    9月15日
    9月14日
    9月13日
    9月12日
    6月11日
    梦断代码阅读笔记
    11周总结
    梦断代码阅读笔记
    10第一阶段意见评论
  • 原文地址:https://www.cnblogs.com/ahfuzhang/p/10843181.html
Copyright © 2011-2022 走看看