- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想在 CentOS 5.5 机器上安装和使用最新版本 (1.1.1) 的 libpcap。我通过以下方式配置、编译和安装了新的 libpcap 库:
[dima@localhost libpcap-1.1.1]$ ./configure
[dima@localhost libpcap-1.1.1]$ make
[dima@localhost libpcap-1.1.1]$ sudo make install
但是当我尝试链接 libpcap 共享库(使用 -lpcap
链接器标志)时,我的应用程序链接到旧版本的 libpcap 库(使用 pcap_lib_version() 验证
API 调用。
我需要做什么才能链接到新的 libpcap 库?
提前致谢
最佳答案
在不指定 --prefix
或其他安装位置选项的情况下,默认情况下会将新的 libpcap 安装在 /usr/local/lib 中。假设您要覆盖的旧版本是 CentOS 系统版本,/usr/lib 中也是如此。
因此,链接器似乎在搜索 /usr/local/lib 之前搜索 /usr/lib。
您可以通过将 -Wl,-Map,foo.map
添加到链接您的应用程序的 GCC 命令,然后 grep 生成的 foo 来准确查看链接到哪个 libpcap。 libpcap
的 map 文件。
您可以通过查看(两者)的输出来查看链接器正在使用的库搜索路径
gcc -print-search-dirs | grep ^libraries
ld --verbose | grep SEARCH_DIR
如果/usr/lib出现在/usr/local/lib之前,你可以添加-L/usr/local/lib
到您的链接命令对它们重新排序并选择您的新库。但这确实是一个 hack。
所有这些都是针对链接时出现问题的情况。根据此共享库的版本控制方式,真正的问题可能出现在动态链接期间运行应用程序时。或者两者兼而有之。
当您在应用程序上运行 ldd 时,您看到为 libpcap 列出的路径是什么?当您使用 -L/usr/local/lib
构建应用程序时会怎么样?
ldd yourapp
要强制动态链接器在 /usr/local/lib 中找到您的共享库,您可能需要查看链接器的 -rpath
选项,或者 LD_LIBRARY_PATH
环境变量。将 -L/usr/local/lib -Wl,-rpath,/usr/local/lib
添加到您的链接命令肯定会确保您的新版本库得到使用。但是 -rpath
和 LD_LIBRARY_PATH
更像是一种 hack,如果您在没有仔细考虑的情况下尝试将您的应用程序二进制文件提供给其他人,则会引入其他问题。
所有这一切的非 hackish 方法是确保将新的共享库安装到系统已知的目录中。这可能意味着 /usr/lib 如果这是库的现有版本所在的位置。
您可以通过在构建 libpcap 时将 --prefix=/usr
添加到配置命令来实现。在那里安装新的 libpcap 后,您应该能够编译并链接您的应用程序,而无需任何额外的链接器选项。
但是这会干扰包管理,因此在通过包管理器更新时会导致其他问题。因此,您可能想先卸载系统 libpcap 软件包,或者总体上研究一下在 CentOS 上替换系统软件包的正确方法。
关于linux - 链接新版本的 libpcap 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3902573/
我以使用文件库的方式实现。 然后我有以下代码: 更新根:一个HtmlRoot super updateRoot: anHtmlRoot. anHtmlRoot title: self title. a
这里有一个问题要问我的父亲。从 Excel 5 到现在他使用 Excel 2002,他在 Excel 中使用 VBA 已经有二十多年了。 由于他在Excel中使用VBA很长时间,并且广泛使用记录宏的功
我正在编写一个程序来在本地备份我的 Google 相册库,上周代码运行良好,但在过去的几天里,我反复从 API 客户端收到错误消息,说“photoslibrary v1”不存在在 Google 的 A
谁能建议如何解决这两个问题? - 无法升级 Jenkins 和 SVN 插件 - 无法连接到 svn 我正在 Windows 64 位机器上设置 Jenkins。它被配置为作为 Windows 服务运
这个问题已经有答案了: Trouble with UTF-8 characters; what I see is not what I stored (5 个回答) 已关闭 6 年前。 它在我的旧服务
我无法在 Chrome 新版本中打开弹出窗口。我单击打开模式对话框弹出窗口的链接,但弹出窗口没有出现。我猜测这是 google chrome 新版本的问题。 function DownloadRepo
我试图找到一种方法来结合“NewReleases”ResponseGroup 和关键字搜索。 我正在使用 PHP Soap Library . 我知道它不再维护,因为这里是 new version ,
我在谷歌分析中创建了新帐户 并发现它有新的用户界面:没有 View ,无法添加目标。如何添加? 最佳答案 刚刚打开 的切换事件 在转换报告中将其标记为 转换 : 关于google-analytics
我从 Codecanyon 购买(许可)了一些不在 GIT 中维护的代码。我现在对它做了很多更改(使用 GIT)。很快原始代码的作者将发布一个新版本。我会想在不丢失我自己的情况下 merge 他们的更
首先,我指的是这个问题( LINK ),它对我没有帮助,因为当时框架的版本较低,所以我开始新问题。 所以我正在使用 Grails 2.4.3 框架并尝试在其中使用 Drools 规则引擎。Java版本
这个问题已经有答案了: Firefox Web Console Disabled? (4 个回答) 已关闭 9 年前。 我在 Mac OSX 上运行 Firefox 28.0,并尝试使用控制台和 Fi
我遇到了有关应用内购买的问题。我之前通过应用内购买启动了我的应用程序 v1.0。现在我通过应用内购买上传了 v1.1。该应用程序显示“等待审核”状态。但是In-App purchase还是显示“Wai
我们都知道 - 这是列出我们最喜欢的软件的每个新版本带来的变化的阅读。每当它捆绑为文件(Changes.txt、CHANGES、WhatsNew.txt 等)或出现在安装程序中时,这通常是我们在安装/
我想将 hibernate-3.5-1.Final 与此插件一起使用,这里我的依赖项应该是什么。它似乎正在拿起一组较旧的 jar ,但现在失败了。
我注意到昨天发布了OpenCV的新版本v2.3。 我无法使用cmake以及编译Linux和Unix源代码的基本说明在Mac中安装此版本。 我在执行make指令时获得了以下错误消息: /Users/jo
我正在将 POI jar 从旧版本升级到新版本 ( 3.10.1 )。我在构建文件中看到 poi-contrib.jar 位于类路径上,并且版本为 2.5.1-final-20040804。(我不确定
前一段时间我创建了this帖子,我和我的同事找到了两个不同的答案(都有效): 第一个解决方案是使用 Intent callIntent = new Intent (“android.intent.ac
起初集群中的所有代理都可以正常启动和工作,但有时其中一个代理会遇到问题。并且会出现一些现象: 整个集群挂了,生产者和消费者也不工作,因此网络流量从监视器降为零; 使用kafka-topic.sh描述t
在 Chrome 更新之前,我的代码运行良好。 我对我的服务器进行了 ajax 调用。我的服务器收到调用,将 JSON 返回给客户端,但答案始终为空。当我查看 Fiddler 时,我从服务器得到了答案
我从事一个项目已有 1 年,并定期进行重要更新。上次在 3 天前,我存档并生成了一个 IPA,但在加载屏幕后,应用程序崩溃了。但是当我运行该应用程序时,它工作正常,一切都像以前一样工作。 检查下面的链
我是一名优秀的程序员,十分优秀!