• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

(zusammen)linken zweier Bibliotheken

blutaermer

Ingrid Marie
Registriert
31.12.03
Beiträge
273
Hallo,

ich habe hier zwei dylibs rumliegen, die ich gerne verschmelzen wuerde. Ich dachte das geht so:
Code:
ld foo.dylib bar.dylib -o foobar.dylib
ich bekomme aber folgende fehlermeldung
Code:
ld warning: -arch not specified
ld: in foo.dylib, can't link with bundle (MH_BUNDLE) only dylibs (MH_DYLIB) for inferred architecture i386
:( Googlen hat auch nichts gebracht. Weiss jemand woran das liegen kann?
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Welche Architektur haben die Dylibs denn?

Alex
 

blutaermer

Ingrid Marie
Registriert
31.12.03
Beiträge
273
gute frage. ich vermute mal x86 (also x86 auf jedenfall, ich weiss nur nicht ob ppc auch - glaube es aber nicht). es gibt doch sicher eine moeglichkeit das herauszubekommen oder?
(ich hatte gedacht otool aber da finde ich gerade nix)
 

blutaermer

Ingrid Marie
Registriert
31.12.03
Beiträge
273
nachtrag:
Code:
ld -arch i386 foo.dylib bar.dylib -o foobar.dylib
reduziert die meldungen auf
Code:
ld: in foo.dylib, can't link with bundle (MH_BUNDLE) only dylibs (MH_DYLIB)
war irgendwie zu erwarten
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
dann gibt doch mal -arch i386 an

Alex
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Dann ist die eine dylib keine. Was sagt denn "file" zu Deinen Dylibs?

Alex
 

blutaermer

Ingrid Marie
Registriert
31.12.03
Beiträge
273
sind beides bundles. (... Mach-O bundle i386)

kann man aus zwei bundles eins machen?
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Das weiss ich jetzt auch nicht, offenbar nicht.

Um welche dylibs geht es denn?

Alex
 

blutaermer

Ingrid Marie
Registriert
31.12.03
Beiträge
273
die dylibs werden aus C++ code generiert. dazu bediene ich mich vorgegebener makefiles (ist ein projekt, was sich der infrastruktur eines relativ grossen anderen projektes bedient) und weiss daher auch nicht so ganz was dort passiert (ziemlich viel automatismen etc.).

unter linux werden wohl shared libs erstellt, die man dann in eine werfen kann - naja egal.

wird auch anders gehen. vielen dank fuer deine hilfe und ein schoenes, sonniges wochenende.
 

blutaermer

Ingrid Marie
Registriert
31.12.03
Beiträge
273
Zum Linken von C++ Dateien sollte man immer den C++ Compiler nutzen.

Hallo,

das hatte ich auch schon probiert und hab es eben nochmals probiert - funktioniert aber auch nicht.
Interessehalber: Warum sollte das eigentlich besser sein? Der Compiler ruft doch auch nur ld auf? g++ und gcc sind doch eh nur wrapper fuer cpp, cc1, as und ld - oder?
 

tjp

Altgelds Küchenapfel
Registriert
07.07.04
Beiträge
4.059
Interessehalber: Warum sollte das eigentlich besser sein? Der Compiler ruft doch auch nur ld auf? g++ und gcc sind doch eh nur wrapper fuer cpp, cc1, as und ld - oder?
Ja, aber der g++ ergänzt den Aufruf des Linkers um eine ganze Reihe von Optionen, die Du im Fall, daß Du ld direkt aufrufst erstmal mühsam zusammensuchen darfst. Insofern dürftest Du via g++ schneller zum Ziel kommen.
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Ja, aber der g++ ergänzt den Aufruf des Linkers um eine ganze Reihe von Optionen, die Du im Fall, daß Du ld direkt aufrufst erstmal mühsam zusammensuchen darfst. Insofern dürftest Du via g++ schneller zum Ziel kommen.

Richtig, es gehört beim direkten Aufruf von ld einiges an "special build-foo" dazu, die Optionen können ziemlich obskur sein.

Und im übrigen ist es natürlich umgekehrt:

/usr/bin/cpp ist ein Script, dass auf OS X im Normalfall /usr/bin/gcc-4.0 aufruft.

Alex