4

我将我的 Xcode 项目中的 ffmpeg dylibs 升级到了新版本,现在当我运行我的应用程序时,我在 Xcode 控制台窗口中收到所有这些警告。任何想法为什么我得到这些?

提前致谢!

这是一个缩写版本,但你会明白的。

warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/4xm.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/4xm.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/8bps.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/8bps.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/8svx.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/8svx.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/a64multienc.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/a64multienc.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aac_ac3_parser.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aac_ac3_parser.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aac_adtstoasc_bsf.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aac_adtstoasc_bsf.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aac_parser.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aac_parser.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aacadtsdec.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aacadtsdec.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aaccoder.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aaccoder.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aacdec.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aacdec.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aacenc.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aacenc.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aacps.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aacps.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aacpsy.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aacpsy.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aacsbr.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aacsbr.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aactab.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aactab.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aandcttab.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aandcttab.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aasc.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aasc.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3_parser.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3_parser.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3dec.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3dec.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3dec_data.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3dec_data.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3dsp.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3dsp.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3enc.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3enc.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3enc_combined.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3enc_combined.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3enc_fixed.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3enc_fixed.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3enc_float.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3enc_float.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3tab.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3tab.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/acelp_filters.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/acelp_filters.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/acelp_pitch_delay.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/acelp_pitch_delay.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
4

3 回答 3

2

如何中和“无法打开 OSO”并强制“o”加载:


免责声明:你不应该这样做:)


如前所述,错误消息告诉您调试信息是 dylib 的错误信息。

但是,如果出于某种奇异的原因,您认为您的“o”文件(尽管它们可能带有错误的时间戳)确实包含正确的信息并且您需要将它们加载到 gdb 中,然后继续...

对于下面的示例代码,我假设一个名为的 o 文件abcdefg.o和一个名为lib_jklmnop.dylib


第一步。运行此命令:

nm -ap lib_jklmnop.dylib  | grep OSO | awk '{printf("%s %s\n", toupper($1), $0 )}'

输出应包含:

00000000560D902C 00000000560d902c - 03 0001   OSO /some/file/path/abcdefg.o

注意:您必须找到一个包含“abcdefg.o”的输出行。我们只修复了一个文件的 OSO 警告:abcdefg.o,因此如果您不使用与该文件对应的时间戳,那么以下步骤将毫无意义。

第二步。 取第一列中的十六进制数(本例中为 560D902C),并通过 python 运行它,如下所示:

echo import datetime\; t=datetime.datetime.fromtimestamp\( 0x560D902C \) \; print \( t.strftime\(\'%Y%m%d%H%M.%S\'\) \) | python3

(您可以在此步骤中使用 perl 或其他东西。出于演示目的,Python 似乎易于访问和移植。)上面将采用“0x560D902C”并生成格式化的时间戳:201510011257.32

第三步。 使用从步骤 2 获得的格式化时间戳,运行touch命令以更改 abcdefg.o 上的时间戳:

touch -t 201510011257.32  abcdefg.o

现在“o”上的时间戳与 dylib 中的 OSO 条目匹配。GDB 将加载这个“o”文件。

(后代:在 Mac OS X 10.8.5 上使用 GNU gdb 6.3.50-20050815 Apple 版本 gdb-1824 进行测试)

推荐阅读:

Apple DWARF 调试方案

Bugzilla@Mozilla - GDB 抱怨 .o 文件的时间戳比可执行文件更新

于 2015-10-02T19:09:39.707 回答
1

当我看到这个时,我经常发现 clean 和 rebuild 会修复警告。

于 2012-09-28T14:42:30.547 回答
0

几个星期以来,我一直在 gdb 中容忍这个“无法打开 OSO 文件”输出。随意的谷歌搜索总是让我回到这里。

@kakyo 的回答(尝试重建)有效,但我想知道更多。

基本(众所周知?)背景信息: “o”文件和“dylib”文件都是在构建期间生成的。“o”文件包含调试信息。但是,当链接器链接“o”文件以创建“dylib”时,该调试信息​​会放入生成的 dylib 中。

警告表明“o”文件上的时间戳比“dylib”上的时间戳更新。实际上——这种区别很重要——警告将“o”文件的时间与 dylib中的时间戳进行比较。您可以使用以下命令查看 dylib 中与 OSO 相关的时间戳:

bash_prompt$ nm -ap libavcodec.dylib  | grep OSO

00000000560d913f - 03 0001   OSO /Downloads/ffmpeg-0.8.5/libavcodec/4xm.o
00000000560d913f - 03 0001   OSO /Downloads/ffmpeg-0.8.5/libavcodec/8bps.o
00000000560d913e - 03 0001   OSO /Downloads/ffmpeg-0.8.5/libavcodec/8svx.o
00000000560d913e - 03 0001   OSO /Downloads/ffmpeg-0.8.5/libavcodec/a64multienc.o
00000000560d9140 - 03 0001   OSO /Downloads/ffmpeg-0.8.5/libavcodec/aac_parser.o
00000000560d9141 - 03 0001   OSO /Downloads/ffmpeg-0.8.5/libavcodec/aaccoder.o

请注意:第一列中的十六进制值是时间戳。

GDB(调试器)在dylib中记录的路径找到o文件,然后GDB检查时间戳。

似乎这个时间戳检查功能最明显的用例如下:

  1. 您的产品(比如说,您公司的“旗舰应用程序”)在您的应用程序包中附带了一些第三方 dylib(如 ffmpeg dylib)。
  2. 你在 GDB 下启动你的应用程序,你的应用程序加载第三方 dylib。
  3. 哎呀!您的 app bundle 包含一个过时third_party.dylib. 你昨天实际上构建了一个新的third_party.dylib(它产生了一个新的 dylib新的“o”文件)。那些新鲜的第三方项目都在“ ~/third_party/other_folder”中,您忘记将最新的复制third_party.dylib到您的应用程序包中。

假设third_party.dylib始终构建在同一个(项目外部)目录中,那么这些时间戳检查是提醒您确切“哎呀!”的一种方法。如上所述。您的过时副本third_party.dylib(您的应用程序包中的副本)具有指向“ ~/third_party/other_folder/someclass.o”的“OSO”条目,但调试器会提醒您“ ~/third_party/other_folder/someclass.o”最近已重新编译,并且您似乎没有使用对应最新编译的dylib。

有趣的琐事:错误说“比可执行时间戳更近”[重点是我的]——但这并不总是正确的!如果时间戳比 dylib OSO 条目预期的新旧,则会出现错误。当严格的时间戳相等测试失败时会出现该错误。在此处查看相关的 gdb 源代码:

https://github.com/unofficial-opensource-apple/gdb/blob/ae8094e0d84d94fc0ad9b5ecdcd79acd722879f8/src/gdb/dbxread.c http://www.opensource.apple.com/source/gdb/gdb-952/src/gdb /dbxread.c

最后说明:要实际解决“无法打开 OSO”错误,请返回@kakyo 的原始正确建议

于 2015-10-02T18:40:25.223 回答