gpt4 book ai didi

Ubuntu、opencv 和链接

转载 作者:太空宇宙 更新时间:2023-11-03 20:50:19 25 4
gpt4 key购买 nike

我前几天安装了Ubuntu,用apt-get安装了build_essentials、opencv、highgui等。g++是4.6.1,opencv好像是2.1.0..我没有从源码构建opencv。 .

我们有一些使用 opencv 功能的软件。让我们假设源文件名为 a.cpp 和 b.cpp。我编译成 a.o 和 b.o,然后将它们放入 .so 库(称为 libab.so)。

最后,有一个包含 main 的文件(称为 z.cpp)。我尝试从它构建一个可执行文件,但是我得到了大量关于 cv::stuff 的“ undefined reference ”错误。我的链接行看起来像这样:

g++ -fPIC -g z.cpp -L../lib -lab -lml -lcvaux -lhighgui -lcv -lcxcore -o z.out

然后我得到 undefined reference 错误(所有这些都是 cv::东西)。

有趣的是,如果我直接链接我的 .o 文件,它构建得很好。所以这个:

g++ -fPIC -g z.cpp a.o b.o -lml -lcvaux -lhighgui -lcv -lcxcore -o z.out

有效。

我读过的所有内容似乎都暗示这可能是一个链接线排序问题,但我已经尝试了所有排序排列并遇到了同样的问题,所以我真的不认为这是我的问题,但我仍然可以是错的。任何人都知道如何使用我的库构建它,以及为什么如果我使用库中的完整 .o 文件集成功构建但不能使用库本身构建它会表现不同?

最佳答案

您可以将以下标志传递给 g++:

`pkg-config --libs opencv`

例如:

g++ myprogram.cpp `pkg-config --libs opencv` -o myprogram

pkg-config 为编译器提供有关库的信息。

你可以看看:

/usr/local/lib/pkgconfig/opencv.pc

这个文件包含了编译的所有相关信息:

prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir_old=${prefix}/include/opencv
includedir_new=${prefix}/include

Name: OpenCV
Description: Open Source Computer Vision Library
Version: 2.3.1
Libs: -L${libdir} -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann
Cflags: -I${includedir_old} -I${includedir_new}

关于Ubuntu、opencv 和链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10415236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com