【发布时间】:2011-02-12 18:29:52
【问题描述】:
我正在编写一个使用 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 库,更重要的是,我该如何解决这个问题?
【问题讨论】: