भागो otool -L
धन्यवाद, और यह अपने वास्तव में संस्करण दिखाएगा। मैं libSystem.B चयन के रूप में यह 10.4 और 10.5 SDK में अलग संस्करण है:
$ otool -L /Developer/SDKs/MacOSX10.4u.sdk/usr/lib/libSystem.B.dylib
/Developer/SDKs/MacOSX10.4u.sdk/usr/lib/libSystem.B.dylib:
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.3.11)
/usr/lib/system/libmathCommon.A.dylib (compatibility version 1.0.0, current version 220.0.0)
$ otool -L /Developer/SDKs/MacOSX10.5.sdk/usr/lib/libSystem.B.dylib
/Developer/SDKs/MacOSX10.5.sdk/usr/lib/libSystem.B.dylib:
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.4)
/usr/lib/system/libmathCommon.A.dylib (compatibility version 1.0.0, current version 292.4.0)
(देखते हैं कि कैसे पहले एक 88.3.11 संस्करण है, जबकि दूसरे 111.1.4 है)। यह उदाहरण भी पता चलता है कि नहीं सभी पुस्तकालयों उन में संस्करण संख्या के साथ फ़ाइलें के सांकेतिक लिंक कर रहे हैं:
$ ll /Developer/SDKs/MacOSX10.*.sdk/usr/lib/libSystem.B.dylib
-rwxr-xr-x 1 root wheel 749K May 15 2009 /Developer/SDKs/MacOSX10.4u.sdk/usr/lib/libSystem.B.dylib
-rwxr-xr-x 1 root wheel 670K May 15 2009 /Developer/SDKs/MacOSX10.5.sdk/usr/lib/libSystem.B.dylib
-rwxr-xr-x 1 root wheel 901K Sep 25 00:21 /Developer/SDKs/MacOSX10.6.sdk/usr/lib/libSystem.B.dylib
यहाँ, फ़ाइलें उनके नाम में संस्करण संख्या नहीं है।
संपादित करें: एक दूसरे समाधान एक परीक्षण कार्यक्रम है, जिसमें आप पुस्तकालय आप जाँच करना चाहते हैं लोड मजबूर में NSVersionOfRunTimeLibrary
उपयोग करने के लिए है। एक कार्यक्रम libversion
बनाएं निम्नलिखित सी स्रोत से:
#include <stdio.h>
#include <mach-o/dyld.h>
int main (int argc, char **argv)
{
printf ("%x\n", NSVersionOfRunTimeLibrary (argv[1]));
return 0;
}
उसके बाद, आप ऐसा कहते हैं:
$ DYLD_INSERT_LIBRARIES=/usr/lib/libpam.2.dylib ./a.out libpam.2.dylib
30000
(यहाँ, संस्करण संख्या हेक्साडेसिमल के रूप में मुद्रित किया जाता है, लेकिन आप अपनी आवश्यकताओं के अनुकूलित कर सकते हैं ।)
स्रोत
2010-03-03 21:12:39
अधिक बेहतर उत्तर, हटाया गया मेरा। – EightyEight