在 Windows 上,调试库的名称有 d 作为后缀。但我不知道 Linux 是否有规则。
我知道 Debian 上有一些 dbg 包。例如,包 libjpeg62-dbg 的库放在/usr/lib/debug/usr/lib/libjpeg.so.62.0.0
中。将调试版本库放入/usr/lib/debug
?
还有更多。例如,如果我运行pkg-config --libs opencv
会将 GCC 链接选项返回给我,例如:
-L/usr/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann
非常好。但我在pkg-config
中找不到可以返回 debug 版本库的链接选项的选项,例如:
-L/usr/lib/debug -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann
如果有关于调试版本库的标准规则,为什么pkg-config
没有选项可以返回 debug 版本的选项?
所以,我想知道:
pkg-config --libs
这样的调试库? 感谢。
答案 0 :(得分:10)
Linux和Windows对此有不同的看法。在Linux中,提供调试库真的没什么意义,因为如果有人真的想调试库,他们通常会有源代码。否则,您可以混合和匹配(将“发布”库与“调试”程序链接就可以了)。如果你真的想要,你可以成为一个好人并留下调试符号(系统管理员可以在他们认为有太多膨胀的情况下删除符号)。
另一个问题是在linux下有太多的编译器标志。不只是“调试”和“发布”。您可以打开和关闭一百万个标志,以及各种目标体系结构。这就是为什么大多数库开发人员只是发布源代码并让用户(或发行版维护者)决定打开和关闭的内容。换句话说,您对“调试”库的想法无法预测每个开发人员的需求。
答案 1 :(得分:4)
您无需链接到库的调试版本即可使用它,这就是pkg-config
不提供此类选项的原因。您需要做的就是在运行程序时适当地设置LD_LIBRARY_PATH
,调试库将在运行时使用。