ss1271's Site

风餐露宿,不可一日无码.

解决dyld缓存冲突的问题

| Comments

近日升级到了号称是Lion之前的最后一版Snow Leopard–10.6.8,却遇到个怪现象,即每次打开终端总会出现:
dyld: shared cached file was build against a different libSystem.dylib, ignoring cache
而且该dyld缓存冲突的问题伴随着你输入的每一条命令出来一次。。。如果你有幸编译个神马东西,那蹦出几百行dyld冲突也说不定,看着十分蛋疼闹心,遂决定解决一下。 做了简单搜索发现,不少人升级系统之后都遇到过这个问题,不一定存在于10.6.7-10.6.8的升级过程中,也曾经存在于以前几个版本的更新过后。大致提到两种解决方案(拿去Genius Bar当伸手党不算。。。): 1、手动强制更新dyld; 2、重启至安全模式(Safe Boot),系统会自动清空dyld缓存。 我使用第一种方案未能奏效,不过一并写出以飨读者。

方案一:手动更新dyld缓存

来源) 打开终端,没错,你还能看到那个神马dyld: shared cached file was build against a different libSystem.dylib, ignoring cache这blablabla一堆玩意,然后你很淡定的输入:
sudo update_dyld_shared_cache
或者
sudo update_dyld_shared_cache -force
然后自这行命令回车起,应该就不会有那blabla一堆提示你dyld缓存冲突的提示了。如果和我一样RP不行此法不济,请往下看方案二。

方案二:利用Safe Boot清空dyld缓存

来源) MacOS设有Safe Boot机制(Safe Boot的解释请参见Apple官方关于Safe Boot的解释),其具有的一个特性就是清空dyld缓存:
Mac OS X v10.5.6 or later: A Safe Boot deletes the dynamic loader shared cache at (/var/db/dyld/). A cache with issues may cause a blue screen on startup, particularly after a Software Update. Restarting normally recreates this cache.
所以,果断Safe Boot一下吧。Safe Boot进去之后,果断再重启,你会发现这dyld冲突已经不再了。。。 另外还有个备选方案,就是替换文件法,墙裂建议蛋疼人士、不怕折腾人士以及不屑使用前两种方案的人士使用: 首先查看下面两个文件的修改时间:
/usr/lib/libSystem.dylib /usr/lib/libSystem.B.dylib
你会发现后者的最后修改时间和你电脑开始出现dyld冲突的时间吻合,这时候你可以再找一台没有出过这个问题的电脑,看看那上面的libSystem.B.dylib的修改时间,然后使用touch -t命令修改这文件的修改日期即可。 不保证此法管用,仅供蛋疼乳酸人士尝试,后果自负。(方法来源) 附: Safe Boot的方法是: 1、关机 2、按开关 3、当听到开机音的时候果断按下Shift键不撒手 4、等灰色Apple Logo粗线并且下面还有旋转小菊花的时候,松开Shift

Comments