Page 1 of 1
Forum

Welcome to the Tweaking4All community forums!
When participating, please keep the Forum Rules in mind!

Topics for particular software or systems: Start your topic link with the name of the application or system.
For example “MacOS X – Your question“, or “MS Word – Your Tip or Trick“.

Please note that switching to another language when reading a post will not bring you to the same post, in Dutch, as there is no translation for that post!



Share:
Notifications
Clear all

[Solved] Lazarus - macOS - ld: warning: object file xyz was built for newer macOS version (x.y) than being linked (y.z)

2 Posts
1 Users
0 Reactions
1,741 Views
 Hans
(@hans)
Famed Member Admin
Joined: 11 years ago
Posts: 2717
Topic starter  

Moving around between different machines I sometimes run into Lazarus giving me warnings like these:

ld: warning: object file (/Volumes/GoogleDrive/My Drive/Projects/LazarusProjects/Tests/Test GetMntInfo/lib/aarch64-darwin/project1.o) was built for newer macOS version (11.0) than being linked (10.8)
ld: warning: object file (/Users/hans/fpcupdeluxe/fpc/units/aarch64-darwin/rtl/system.o) was built for newer macOS version (11.0) than being linked (10.8)
ld: warning: object file (/Users/hans/fpcupdeluxe/fpc/units/aarch64-darwin/rtl/lnfodwrf.o) was built for newer macOS version (11.0) than being linked (10.8)
ld: warning: object file (/Users/hans/fpcupdeluxe/fpc/units/aarch64-darwin/rtl/exeinfo.o) was built for newer macOS version (11.0) than being linked (10.8)
ld: warning: object file (/Users/hans/fpcupdeluxe/fpc/units/aarch64-darwin/rtl/strings.o) was built for newer macOS version (11.0) than being linked (10.8)

Basically saying, in this example, that an object file was build for one macOS version, yet linked against a different version.

I will not claim to be an expert, but this is how I usually fix this:

In Lazarus goes to Project - Project Options - Compiler Options - Custom Options.

In the field "Custom options", we need to at the"-WM" option which allows us to select a specific SDK.
For example: -WM12.0 will enforce the macOS 12.0 SDK.

Now do a "Clean and Build" for you project and things should be OK now.
Alternatively, I read you can add this to the fpc.cfg file as well.


   
ReplyQuote
 Hans
(@hans)
Famed Member Admin
Joined: 11 years ago
Posts: 2717
Topic starter  

Note that this trick becomes even more relevant with Sonoma, where SDK 10.9 is a minimum requirement to notarize your Lazarus applications.

This would be the error: The binary uses an SDK older than the 10.9 SDK.

You can find the error with

xcrun notarytool log  --apple-id "email" --password "pwd" --team-id "teamid" UUID

 where the info is based on what you used to submit the app for notarizing:

  • email= your AppleID email address
  • pwd = application specific password
  • teamid = team ID as found in your signing certificate
  • UUID = long-ass number you get after submitting your app

So this could look something like this:

xcrun notarytool log  --apple-id "email@example.com" --password "abgf-yuhg-zzsd-abcd" --team-id "X9F96M8JH7" 5bd49972-666f-4f80-87bc-7f8f81c62206

The JSON formatted result will look something like this:

{
  "logFormatVersion": 1,
  "jobId": "5bd49972-666f-4f80-87bc-7f8f81c62206",
  "status": "Invalid",
  "statusSummary": "Archive contains critical validation errors",
  "statusCode": 4000,
  "archiveFilename": "bananaboat-app.dmg",
  "uploadDate": "2023-10-11T09:46:26.451Z",
  "sha256": "29f68d587a2a8178e4e4caa9eccbd604c123cba89a3c1c9496412390e8601bad",
  "ticketContents": null,
  "issues": [
    {
      "severity": "error",
      "code": null,
      "path": "bananaboat-app.app/Contents/MacOS/bananaboat",
      "message": "The binary uses an SDK older than the 10.9 SDK.",
      "docUrl": "https://developer.apple.com/documentation/security/notarizing_macos_software_before_distribution/resolving_common_notarization_issues#3087723",
      "architecture": "arm64"
    }
  ]
}

   
ReplyQuote
Share: