使用g++的依赖项时出现问题

Issues using dependencies with g++

本文关键字:问题 g++ 依赖 使用      更新时间:2023-10-16

我在使用g++链接到其他库时遇到了一些严重的问题,它经常让我感到沮丧,甚至在我开始之前就阻止了我。

例如:我只是在使用boost.asio,试用教程。我在文档中发现,我必须链接到boostrongystem和regex,但出于某种原因,我还必须添加pthread才能工作。。。我用"apt-get-install"安装了boost,以为我只需要链接到boost。显然错了。。。

我似乎真的不明白如何在linux上进行开发。你怎么知道什么时候需要添加库?在我举的例子中,boost依赖于pthread,所以我必须链接它。为什么我不必链接到boost依赖的任何其他东西?或者假设pthread依赖于某个东西,为什么我不必链接它(例如,为什么不必链接到标准的库)?你怎么知道g++是如何配置的?你怎么能改变它呢?

我想我的主要问题是:在linux上配置构建有什么逻辑吗?(也欢迎有用的参考资料)

最后一点令人沮丧的是:在我看来,编程总是比实际操作有趣得多,也容易得多。。。

这是由于打包错误造成的。如果库a依赖于库B,那么a应该链接到B。您的应用程序只需要链接到a。

有时某些发行版的库的打包程序会出错。你对此无能为力,真的。例如,当我在Gentoo Linux上链接到boostrongystem时,我不必链接到pthread,因为boostrongsystem本身就链接到pthread:

$ldd/usr/lib/libboostrongystem.so | grep pthreadlibpthread.so.0=>/lib64/libphread.so.0(0x00007fcf677f8000)