xcodelegacy icon indicating copy to clipboard operation
xcodelegacy copied to clipboard

"ld: warning: bad symbol action"

Open arekkusu42 opened this issue 6 years ago • 2 comments

Using OSX 10.9.5 and starting with Xcode 6.2:

  • I downloaded the linked Xcode3 and 4 installers
  • I ran "./XcodeLegacy.sh -compilers -osx104 buildpackages" which appears to successfully extract all the components
  • I ran "sudo ./XcodeLegacy.sh -compilers -osx104 install" which mostly succeeds, but produces a "No value to remove at key path MinimumSDKVersion" error (as noted in Issue #53)
  • I restored the missing /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Info.plist
  • I opened an existing Xcode project, which is configured to build i386 and x86_64 against the 10.9 SDK, deploying to 10.4. With no project changes (i.e. NOT changing the SDK or compiler), I now receive these new "bad symbol action" ld warnings:
Ld build/App.build/Debug/App.build/Objects-normal/i386/App normal i386
    cd /Users/arekkusu/App
    export MACOSX_DEPLOYMENT_TARGET=10.4
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch i386 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk -L/Users/arekkusu/App/build/Debug -F/Users/arekkusu/App/build/Debug -filelist /Users/arekkusu/App/build/App.build/Debug/App.build/Objects-normal/i386/App.LinkFileList -mmacosx-version-min=10.4 -fobjc-link-runtime -framework Cocoa -framework OpenGL -Xlinker -dependency_info -Xlinker /Users/arekkusu/App/build/App.build/Debug/App.build/Objects-normal/i386/App_dependency_info.dat -o /Users/arekkusu/App/build/App.build/Debug/App.build/Objects-normal/i386/App

ld: warning: bad symbol action: $ld$install_name$os10.4$/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices in dylib /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks//CoreGraphics.framework/CoreGraphics
ld: warning: bad symbol action: $ld$install_name$os10.4$/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices in dylib /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks//ImageIO.framework/ImageIO
ld: warning: bad symbol action: $ld$install_name$os10.4$/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices in dylib /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks//CFNetwork.framework/CFNetwork

arekkusu42 avatar Jun 06 '19 04:06 arekkusu42

Does it make sense to compile against 10.9SDK to deploy on 10.4?

devernay avatar May 02 '21 00:05 devernay

Yes. That is why the SDK and deployment target are two different variables.

Primarily, using a newer SDK than the deployment target has the downside of not generating build warnings if you use API not available in the older OS. This is solved by temporarily building against the old SDK, or simply testing every code path on every OS you can run on.

Secondarily, using a higher SDK may opt-in to new runtime behavior on new OS versions in some frameworks which look at LC_VERSION_MIN_MACOSX. This is a good reason to use a newer SDK.

arekkusu42 avatar May 02 '21 03:05 arekkusu42