gpt4 book ai didi

c - Mac gcc 试图链接旧的、不存在的库

转载 作者:行者123 更新时间:2023-12-04 06:34:59 27 4
gpt4 key购买 nike

我正在编写一个使用 TagLib 库的简单 C 程序。我最初在/usr/local 中安装了该库,并针对它编译并链接了我的程序。我已经完全删除了这个库,并试图链接到另一个位置的库的编译版本。问题是当我现在编译我的程序时,它编译得很干净,但是在尝试运行它时,我的程序正在寻找曾经存在于/usr/local/lib 中的库而不是新位置。例如,我的代码和新的 TagLib 库位于/Users/mdi/Code/tag 中。

我正在像这样编译我的程序:

cc main.c -Wall -I./taglib/bindings/c -o tag -L./taglib/bindings/c/.libs -ltag_c

就像我说的,编译完成时没有错误或警告。但是当尝试运行二进制文件时,我收到此错误:
dyld: Library not loaded: /usr/local/lib/libtag_c.0.dylib
Referenced from: /Users/mdi/Code/tag/./tag
Reason: image not found
Trace/BPT trap

在二进制文件上运行 'otool -L' 显示:
tag:
/usr/local/lib/libtag_c.0.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.1)

为什么它仍然试图使用甚至不再存在于/usr/local/lib 中的 TagLib 库,更重要的是,我该如何解决这个问题?

最佳答案

我不在 Mac 上开发,但我相信您的问题是您的库不在您的默认动态链接路径中。它因平台而异,但/usr/local/lib 是其中一个常见的,这就是为什么它显示为您在运行时链接的路径。

您可以更改分片库的默认搜索路径,但我不确定如何在 Mac 上执行此操作。您还应该能够在 session 中设置环境变量 DYLD_LIBRARY_PATH 以强制 dyld 在搜索默认目录之前搜索其他目录。

%>  export DYLD_LIBRARY_PATH=/path/to/your/library:$DYLD_LIBRARY_PATH

在系统级别将目录添加到默认搜索路径比上面的环境变量解决方案更好,但我不知道如何在 Mac 上执行此操作。

编辑:

经过一番搜索,我找到了这个 link您可能会发现有帮助。

关于c - Mac gcc 试图链接旧的、不存在的库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4979821/

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