Linker-Error beim Versuch ein PB-Programm zu starten

MAC OSX spezifisches Forum
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
argus
Beiträge: 21
Registriert: 24.02.2014 12:12

Linker-Error beim Versuch ein PB-Programm zu starten

Beitrag von argus »

Hallo Community,

beim Versuch ein beliebiges PB-Programm (z.B. DEBUG "Hello World") unter MacOS zu starten, bekommt man einen Linker-Error:

ld: warning: ignoring duplicate libraries: '-lm', '-lpthread', '/Applications/PureBasic.app/Contents/Resources/compilers/debugger.a', '/Applications/PureBasic.app/Contents/Resources/compilers/objectmanager.a', '/Applications/PureBasic.app/Contents/Resources/compilers/systembase.a', '2DDrawing.a', 'Array.a', 'Cipher.a', 'CipherMD5.a', 'Cocoa.a', 'Date.a', 'Event.a', 'Gadget.a', 'Image.a', 'ImagePlugin.a', 'ImagePluginBMP.a', 'Internal.a', 'LinkedList.a', 'Map.a', 'Memory.a', 'Menu.a', 'Network.a', 'SimpleList.a', 'String.a', 'System.a', 'VectorDrawing.a', 'Window.a'
ld: warning: no platform load command found in '/private/tmp/.pb-1766054020/purebasic.o', assuming: macOS
ld: warning: object file (/Applications/PureBasic.app/Contents/Resources/compilers/debugger.a[2](LanguageSupport.o)) was built for newer 'macOS' version (10.10) than being linked (10.7)
ld: warning: object file (/Applications/PureBasic.app/Contents/Resources/compilers/debugger.a[3](DebuggerLanguage.o)) was built for newer 'macOS' version (10.10) than being linked (10.7)
ld: warning: object file (/Applications/PureBasic.app/Contents/Resources/compilers/debugger.a[4](Debugger.o)) was built for newer 'macOS' version (10.10) than being linked (10.7)
ld: warning: object file (/Applications/PureBasic.app/Contents/Resources/compilers/debugger.a[5](ThreadSupport.o)) was built for newer 'macOS' version (10.10) than being linked (10.7)
ld: warning: object file (/Applications/PureBasic.app/Contents/Resources/compilers/debugger.a[6](UnicodeSupport.o)) was built for newer 'macOS' version (10.10) than being linked (10.7)
...

MacOS-Version: Sequoia 15.7.1
PB-Vesrion: 6.02 LTS

Hat irgendeiner eine Idee, woran das liegen und wie man das Problem lösen könnte?

Viele Grüße von
Argus
Benutzeravatar
Kiffi
Beiträge: 10720
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Linker-Error beim Versuch ein PB-Programm zu starten

Beitrag von Kiffi »

Die V6.02 ist von 2023. Probier doch mal die V6.21 aus.
a²+b²=mc²
Benutzeravatar
Shardik
Beiträge: 751
Registriert: 25.01.2005 12:19

Re: Linker-Error beim Versuch ein PB-Programm zu starten

Beitrag von Shardik »

In PB 6.02 muss die folgende Zeile zu Beginn eines Programms in MacOS Sonoma and Sequoia eingefügt werden. In MacOS Ventura und älteren Versionen ist dies nicht nötig. Seit PB 6.03 hat Fred übrigens meinen Workaround in PureBASIC x64 für MacOS integriert!

Code: Alles auswählen

Import "-fno-pie" : EndImport
Benutzeravatar
argus
Beiträge: 21
Registriert: 24.02.2014 12:12

Re: Linker-Error beim Versuch ein PB-Programm zu starten

Beitrag von argus »

Danke für die Info - es funktioniert!
Benutzeravatar
argus
Beiträge: 21
Registriert: 24.02.2014 12:12

Re: Linker-Error beim Versuch ein PB-Programm zu starten

Beitrag von argus »

Leider besteht das Problem bei folgendem Programm (oder ähnlichen) immer noch:

Code: Alles auswählen

Import "-fno-pie" : EndImport
#Main = 1
ExamineDesktops()
h=DesktopHeight(0)
b=DesktopWidth(0)
If Not InitSprite() Or Not InitKeyboard() : End : EndIf
#flags = #PB_Window_BorderLess
If OpenWindow(#Main, 0, 0, b, h, "Screen im Fenster", #flags)
  If OpenWindowedScreen(WindowID(#Main), 0, 0, b, h)
    ClearScreen(0)
    xo=Random(b-1)
    yo=Random(h-1)
    col=RGB(255,0,0)
    Repeat
      StartDrawing(ScreenOutput())
      DrawingMode(#PB_2DDrawing_Outlined)
      x=Random(b-1)
      y=Random(h-1)
      Circle(x,y,50,col)
      For i=0 To 360 Step 10
        w.f=Radian(i)
        xn=x+50*Cos(w)
        yn=y+50*Sin(w)
        LineXY(x,y,xn,yn,col)
        ExamineKeyboard()
        If KeyboardPushed(#PB_Key_Escape) : Break 2 : EndIf
      Next
      StopDrawing()
      FlipBuffers()
    ForEver
  EndIf
EndIf
Es kommt nun folgende Meldung:
PB Linker Error
ld: warning: ignoring duplicate libraries: '-lm', '-lpthread', '/Applications/PureBasic.app/Contents/Resources/compilers/debugger.a', '/Applications/PureBasic.app/Contents/Resources/compilers/objectmanager.a', '/Applications/PureBasic.app/Contents/Resources/compilers/systembase.a', '2DDrawing.a', 'Array.a', 'Cipher.a', 'CipherMD5.a', 'Cocoa.a', 'Date.a', 'Desktop.a', 'Engine3D.a', 'Event.a', 'Gadget.a', 'Image.a', 'ImagePlugin.a', 'ImagePluginBMP.a', 'Internal.a', 'Keyboard.a', 'LinkedList.a', 'Map.a', 'Math.a', 'Memory.a', 'Menu.a', 'Mouse.a', 'MultimediaBase.a', 'Network.a', 'Screen.a', 'SimpleList.a', 'Sprite.a', 'String.a', 'System.a', 'VectorDrawing.a', 'Window.a'
ld: framework 'AGL' not found
clang++: error: linker command failed with exit code 1 (use -v to see invocation)

Muss hier ein weiterer Import vollzogen werden? Gibt es irgendeine Doku, der man entnehmen kann, welche Imports man bei welchem Befehlen vorher machen sollte oder ist das in einer neueren Version von PB für den Mac bereits enthalten?

Viele Grüße von
Argus
Benutzeravatar
mk-soft
Beiträge: 3874
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Linker-Error beim Versuch ein PB-Programm zu starten

Beitrag von mk-soft »

Das framework AGL wurde von macOS entfernt.
Somit ist bei Sequoia 15.7.1 und Command Line Tools größer v16.0 die PureBasic Version v6.30 Beta 6 erforderlich.
Hier wurde das framework AGL aus PB entfernt
Es gibt aber noch ein Problem bei OpenGLGadget mit AGL. Ist aber noch in Arbeit.

Code Anpassung fehlende Abfragen (v6.30 Beat 6)

Code: Alles auswählen

Import "-fno-pie" : EndImport
#Main = 1
ExamineDesktops()
h=DesktopHeight(0) - 200
b=DesktopWidth(0) - 200
If Not InitSprite() Or Not InitKeyboard() : End : EndIf
#flags = #PB_Window_SystemMenu
If OpenWindow(#Main, 0, 0, b, h, "Screen im Fenster", #flags)
  If OpenWindowedScreen(WindowID(#Main), 0, 0, b, h)
    Repeat
      Repeat
        Event = WindowEvent()
        Select Event
          Case #PB_Event_CloseWindow
            Quit = 1
        EndSelect
      Until Event = 0
      
      ExamineKeyboard()
      
      ;ClearScreen(0)
      xo=Random(b-1)
      yo=Random(h-1)
      col=RGB(255,0,0)
      x=Random(b-1)
      y=Random(h-1)
      
      StartDrawing(ScreenOutput())
      DrawingMode(#PB_2DDrawing_Outlined)
      Circle(x,y,50,col)
      For i=0 To 360 Step 10
        w.f=Radian(i)
        xn=x+50*Cos(w)
        yn=y+50*Sin(w)
        LineXY(x,y,xn,yn,col)
      Next
      StopDrawing()
      
      FlipBuffers()
      
      If KeyboardPushed(#PB_Key_Escape)
        Quit = 1
      EndIf
    Until Quit
  EndIf
EndIf
Zuletzt geändert von mk-soft am 28.12.2025 12:52, insgesamt 1-mal geändert.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Shardik
Beiträge: 751
Registriert: 25.01.2005 12:19

Re: Linker-Error beim Versuch ein PB-Programm zu starten

Beitrag von Shardik »

Fazit: Entweder MacOS Ventura oder älter mit PB 6.02 benutzen oder - wie mk-soft schon erklärt hat - MacOS Sequoia mit der aktuellsten Version PB 6.30 Beta 6 verwenden.
Antworten