Has anyo开发者_如何学编程ne found a fix for this? I read that it has something to do with new dylib format in Snow Leopard...
(This is the lib I get back from MacPorts.)
Thanks, rui
What are you trying to use that library with? Chances are you have an old version of some build tool or app. Have you updated all of your MacPorts
installation?
sudo port selfupdate
sudo port -u upgrade outdated
EDIT: Based on your additional information, more questions:
You have -I /sw/include
and -L /sw/lib
which are standard locations for Fink, not MacPorts (/opt/local/{include,lib}
). In general, it's not a good idea to mix packages from Fink and MacPorts. Are you actually pulling in anything from Fink? If so, are all the Fink packages up-to-date?
If that doesn't resolve the issue, are you building on 10.5 and, if so, which 10.5? Or are you building on 10.6 an app targeted for 10.5 and 10.6? Make sure you have the latest Xcode in either case.
EDIT: It is very difficult to diagnose problems like this based on sketchy information. You say Leopard in your latest comment but then you say you are using the 10.6 SDK. At this point, all I can suggest is that you make sure you have the latest Xcode updates installed and, if you want more help, update the question with a more complete description of what you are trying to do and exactly how and where you are trying to do it, including versions of tools like gcc, et al. Good luck!
We have this same problem whenever we try to run an executable compiled and linked on Snow Leopard without -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.5
and then try to run it on Leopard. Note the -isysroot setting is different than in your comment above.
The application was incorrectly built on OS X 10.6 machine for a 10.5 machine. The developer can fix this by considering three things:
- Using the correct compiler parameters: gcc-4.2 -mmacosx-version-min=10.5 -isysroot /Developer/SDKs/MacOSX10.5.sdk ...
Using the correct linker settings (setting environment variable before link command). This is required, so that the OS X 10.6 linker will not use the loader command 'LC_DYLD_INFO_ONLY' (=0x80000022), because OS X 10.5 does not understand this command:
export MACOSX_DEPLOYMENT_TARGET=10.5 (or setenv MACOSX_DEPLOYMENT_TARGET=10.5)
After this is fixed, one can check if the application was correctly built for OS X 10.5 by running 'otool':
otool -l binary
The correct binary should not contain any 'LC_DYLD_INFO_ONLY' load commands (only 'LC_DYLD_INFO' commands).
(also see my blog article http://grauonline.de/wordpress/?p=71 )
精彩评论