如何忽略对 libpangocairo 库的未定义引用

How to ignore undefined references to libpangocairo library

提问人:keith davis 提问时间:5/16/2019 更新时间:5/16/2019 访问量:1164

问:

我已经用 OpenCv 和 Cairo 建立了一个视频流系统。不幸的是,现在当我尝试构建时,我得到了对 libpangocairo-1.0.so.0 的各种未定义的引用。我想要一个解决方案,我可以忽略这些未定义的引用,或者显式和排他性地指向正确的依赖项。

旁注:我正在使用 CMake。

似乎我的系统库文件被意外查询,而不是用户安装的 OpenCv 依赖项。

我尝试过的事情:

• 重新安装了 libpangocairo

• 更改了LD_LIBRARY_PATH,以明确指向存储库中的开罗库依赖项

• 将 Glib 从 2.0 更新到 2.27(源代码说 Cario/OpenCv 依赖于 GLibc 的更高版本 - 我认为他实际上说的是 2.39,它不存在:white_frowning_face:)

• 将 GTK 更新到 3.0,其中也包含 glib,并将安装其最新版本

• 将 libpangocairo 从 /usr/lib 复制到我们的存储库依赖项(构建正确指向新定位的库,但仍然错误相同)

• 彻底擦除我的环境并从头开始设置环境

错误信息:

//usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0: undefined reference to `cairo_ft_scaled_font_unlock_face'
//usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0: undefined reference to `cairo_ft_font_options_substitute'
//usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0: undefined reference to `cairo_ft_font_face_create_for_pattern'
//usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0: undefined reference to `cairo_ft_scaled_font_lock_face'
collect2: error: ld returned 1 exit status
C++ opencv 共享库 cairo undefined-reference

评论

1赞 JaMiT 5/17/2019
这些是 未定义引用,而不是它的引用。您的链接阶段正在拉入该 Cairo 库,因此它需要解析这些引用才能生成正常运行的可执行文件。忽略不是一种选择。libpangocairo-1.0.so.0
0赞 JaMiT 5/17/2019
链接器的命令行是什么?(它可能会在这些消息之前不久显示,以多行开头并可能延伸到多行。您要链接到哪个版本的开罗?为什么这个版本在您的存储库中而不是正常安装?ld
0赞 keith davis 5/17/2019
@JaMiT, - “intstead of installed normal” - 你的意思是存储在 /usr/local/lib 中?还是别的什么?可以肯定的是,我们正在将它安装在我们自己的存储库中,以允许交叉编译。我们使用 rpath 来设置存储库中包含的库目录的路径。- 开罗版本为 1.16.0。- 命令行上似乎没有任何关于 ld 的信息。这是最后一个命令,后跟对相关库的 rpath 引用:/usr/bin/cmake -E cmake_link_script CMakeFiles/od2_demo.dir/link.txt --verbose=1 /usr/bin/g++ -O3 -DNDEBUG
0赞 Uli Schlachter 5/17/2019
你的项目中似乎有自己的开罗版本。此版本的 cairo 不支持 FreeType。但是,您似乎也在使用 Pango,它是为开罗构建的,支持 FreeType。所以。。。为什么你的项目中有自己的开罗版本?您的系统似乎已经有开罗可用。

答: 暂无答案