file isn't architecture beeing linked



  • Hallo,

    ich versuche gerade, OpenCV zu kompilieren (unter OS X), kriege aber Fehler vom linker:

    z.B.:
    ld: warning: in /sw/lib/libjpeg.dylib, file was built for i386 which is not the architecture being linked (x86_64)

    Als Compiler wird c++-4.2 benutzt, was mit -dumpmachine "i686-apple-darwin" ausgibt, wenn ich allerdings ohne spezielle Angabe kompiliere, sind die *.o dateien x86_64. (?)
    (Das ist doch merkwürdig, ich kenn mich damit nicht wirklich aus, aber i686 klingt irgendwie mehr wie i386 als x86...)
    Das lässt sich umgehen mithilfe der angabe von "-arch i386", was zu den Bibliotheken passen würde.

    Die makefiles werden mit cmake erstellt und ich denke ich verstehe etwas falsch:
    ich dachte:

    cmake CMAKE_CXX_COMPILER="anderer compiler" oder CMAKE_CXX_FLAGS="-arch i386" oder OSX_ARCHITECTURES="i386"
    

    würde helfen,
    aber das ergebnis ist immer dasselbe.

    Die manpage sagt dazu z.b.:

    CMAKE_SYSTEM_PROCESSOR
    The name of the CPU CMake is building for.

    On systems that support uname, this variable is set to the out-
    put of uname -p, on windows it is set to the value of the envi-
    ronment variable PROCESSOR_ARCHITECTURE

    [Edit] uname -p gibt auch i386 aus.

    Dann wäre es doch sinnvoll, auch mit -arch i386 zu kompilieren.
    Wie auch immer, wie mache ich es richtig? es müsste doch eigentlich so funktionieren.

    Vielen Dank im voraus!


Anmelden zum Antworten