FFTW in alle Architekturen ?? HILFE

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • FFTW in alle Architekturen ?? HILFE

    Hallo
    ich hab versucht die FFTW zu erzeugen aber ich konnte es nur mit den folgenden Architekturen schaffen : x86_64.a und i386.a. . mir fehlt aber noch die :armv7.a and arm64.a.
    Hat jemand irgend eine Ahnung wo und wie ich anfangen kann?
    bis jetzt hab ich diesen Script benutzt: http://stackoverflow.com/a/23279575/3553742

    aber hier bekomme ich alle libraries mit den gleichen Architekturen ( x86_64) ?(
    und noch dazu bei ./configure :

    Quellcode

    1. /configure --host=arm-apple-darwin --target=arm-apple-darwin --enable-float --enable-neon

    bekomme ich diesen error :

    Quellcode

    1. configure: error: Need a version of gcc with -mfpu=neon

    so dann hab ich einfach --enable-neon gelöscht und es hat dann funktioniert ( aber immer noch alle libraries mit gleichen Architekturen) . hab ich es falsch gemacht?
    Ich hänge damit seit ca zwei Wochen :(
    Kann mir vielleicht jemand helfen?

    @macmoonshine
    Wofür soll das sudo(8) gut sein? Davon habe ich kein Wort geschrieben. Dein Makefile und andere Dateien gehören jetzt wahrscheinlich root.


    Das Problem liegt nicht an dem Skript sondern an mich. Ich habe immer das Wort "sudo" bei make und configure Befehle beigefügt. Also mit dem oben genannten Skript erzeugt man doch alle Architekturen.
    Danke euch alle. und besten Dank für Macmoonshine


    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von josef907 ()

  • Keine Antwort, sondern nur eine Nebenbemerkung: Du bekommst vergleichbare Funktionalität in einer sehr ähnlichen API direkt von Apple im Accelerate Framework.
    FFTW ist GPL, daher sehr restriktiv (merke, GPL nicht LGPL) bzw. sehr teuer zu lizensieren, wenn Du Deinen eigenen Sourcecode nicht veröffentlichen willst oder kannst.
    Für x86/x64 auf Win/Linux/Mac kann ich den Intel-Compiler mit MKL noch empfehlen, war nicht so viel teuer als FFTW wenn ich mich recht erinnere und man bekommt deutlich mehr.
    C++
  • Danke Zerm!
    Ich habe vergessen zu erwähnen,dass ich mit einem Mac OS X 10.9.2. arbeite.
    Die FFTW war die Idee meines Prof. und ich arbeite auf einer Applikation, die die Device motion misst und speichert und dann durch FFTW gefiltert und auch gezeichnet wird.
    Wie teuer die FFTW ist,ist erstmal nicht wichtig.Könntest du aber bitte den Script durchlesen, womit ich gearbeitet habe und mir sagen was ich falsch mache?
    danke nochmal.
  • Das Script ist schon korrekt.

    Bist Du Dir ganz sicher, dass Du nur die Pakete für die genannte Architektur erhältst? Wie hast Du das getestet?
    Das Script erstellt Dir ganz am Schluss eine libfftw3f.a, die alle fünf Architekturen (arm7, arm7s, arm64, i386, x86_64) beinhaltet.
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • ja Marco, ich bekomme am ende immer die Architektur x86_64 ( durch lipo -info jede library ) und deswegen wenn ich die am Ende alle verbinden will ( lipo ) , bekomme ich ein Fehler. bestimmt mache ich was falsches.
    obwohl, alle pathes richtig sind ( denke ich mal), und ich arbeite aus der richtigen directory ( aus der Ordner fftw-3.3.4).
    das macht mich wirklich verrückt.
    und was sagst du für den error :
    configure: error: Need a version of gcc with -mfpu=neon
  • Marco, ich hab es wieder versucht und immer noch das gleiches:

    Quellcode

    1. ​youssefs-mini:ios-library bahmadios$ lipo -info libfftw3f_armv7.a
    2. input file libfftw3f_armv7.a is not a fat file
    3. Non-fat file: libfftw3f_armv7.a is architecture: x86_64
    4. youssefs-mini:ios-library bahmadios$ lipo -info libfftw3f_arm64.a
    5. input file libfftw3f_arm64.a is not a fat file
    6. Non-fat file: libfftw3f_arm64.a is architecture: x86_64
    7. youssefs-mini:ios-library bahmadios$ lipo -info libfftw3f_armv7s.a
    8. input file libfftw3f_armv7s.a is not a fat file
    9. Non-fat file: libfftw3f_armv7s.a is architecture: x86_64
    10. youssefs-mini:ios-library bahmadios$ lipo -info libfftw3f_i386.a
    11. input file libfftw3f_i386.a is not a fat file
    12. Non-fat file: libfftw3f_i386.a is architecture: x86_64
    13. youssefs-mini:ios-library bahmadios$ cd ..
    14. youssefs-mini:fftw-3.3.4 bahmadios$ lipo -arch armv7 $RESULT_DIR/libfftw3f_armv7.a -arch armv7s $RESULT_DIR/libfftw3f_armv7s.a -arch i386 $RESULT_DIR/libfftw3f_i386.a -arch x86_64 $RESULT_DIR/libfftw3f_x86_64.a -arch arm64 $RESULT_DIR/libfftw3f_arm64.a -create -output $RESULT_DIR/libfftw3f.a
    15. lipo: unknown architecture specification flag: arm64 in specifying input file -arch arm64 ios-library/libfftw3f_arm64.a
    16. lipo: known architecture flags are: any little big ppc64 x86_64 ppc970-64 ppc i386 m68k hppa sparc m88k i860 veo arm ppc601 ppc603 ppc603e ppc603ev ppc604 ppc604e ppc750 ppc7400 ppc7450 ppc970 i486 i486SX pentium i586 pentpro i686 pentIIm3 pentIIm5 pentium4 m68030 m68040 hppa7100LC veo1 veo2 veo3 veo4 armv4t armv5 xscale armv6 armv6m armv7 armv7f armv7s armv7k armv7m armv7em
    17. lipo: Usage: lipo [input_file] ... [-arch <arch_type> input_file] ... [-info] [-detailed_info] [-output output_file] [-create] [-arch_blank <arch_type>] [-thin <arch_type>] [-remove <arch_type>] ... [-extract <arch_type>] ... [-extract_family <arch_type>] ... [-verify_arch <arch_type> ...] [-replace <arch_type> <file_name>] ...
    Alles anzeigen
  • Scheinbar erwartet das BuildScript einen GCC mit der neon Option. Der CLANG/LLVM dürfte das aber nicht mehr haben.

    Wie dem auch sei, wenn da ein File fehlt, muss was beim Make Prozess fehlgeschlagen sein. Gibt es noch weitere Errormeldungen?
    Im Übrigen bastelt lipo Dir keine vernünftige Lib daraus, weil es mit dem flag -arm64 nichts anfangen kann.
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • nein gibt es kein Errormeldung, das war das einzige und wenn ich --enable-neon von ./configure gelöscht habe, hat es weiter funktioniert.( darf ich so machen?)
    und beim Make Prozess auch kein Error., ich wollte den Prozess hier auch postieren aber leider zu lang.
    ich denke Lipo kann nicht funktionieren weil die libraries alle mit Flaschen Architekturen sind oder?
    ich denke ich mache so ein dummer Fehler was für Profis nicht zu merken ist. ( weil das warscheinlich nicht zu vorstellen ist ) ?(

    hast du den script bei dir probiert? und funktioniert ?
  • Anstatt an configure die Architektur zu übergeben, solltest Du ihm lieber direkt die richtigen Tools unterjubeln. Die OSX-Compiler sind zwar cross-compiling-fähig, dass heißt aber noch lange nicht, dass sie die richtigen Systemheader und -libs finden. Ich hatte vor einiger Zeit ein Skript im Forum gepostet, mit dem sich Tesseract übersetzen lässt (siehe hier). Das lässt sich sicherlich auch für Deine Lib anpassen.
    „Meine Komplikation hatte eine Komplikation.“


  • Hallo Macmoonshine.
    Danke für deinen Rat.
    ich habe den Shell-Skript ausgepackt und in den Ordner tesseract gespeichert. und den Befehl ./build.sh aufgerufen aber es hat mir error gezeigt :

    Quellcode

    1. ./build.sh: line 38: pushd: /opt/local/include/tesseract/leptonica-1.69:
    2. No such file or directory./build.sh: line 51: ./configure: No such file or directory

    dann habe ich leptonica installiert und den Ordner im tesseact gespeichert.
    dann noch mal ./build.sh und dann bekam ich :

    Quellcode

    1. ./build.sh: line 59: pushd: /opt/local/include/tesseract/tesseract-ocr: No such file or directory
    2. ./build.sh: line 71: ./configure: No such file or directory

    dann genauso hab ich mit tesseract.ocr. gemacht. Installiert und gespeichert. Und noch mal ./build.sh dann hat es funktioniert bis auf am ende diesen Error gezeigt hat:

    Quellcode

    1. ... Making all in testing
    2. make[2]: Nothing to be done for `all'.
    3. ar: creating archive /opt/local/include/tesseract/build/i386/Tesseract
    4. /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /opt/local/include/tesseract/build/i386/Tesseract(bmpiostub.o) has no symbols
    5. /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /opt/local/include/tesseract/build/i386/Tesseract(gifio.o) has no symbols
    6. /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /opt/local/include/tesseract/build/i386/Tesseract(jpegio.o) has no symbols
    7. /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /opt/local/include/tesseract/build/i386/Tesseract(leptwin.o) has no symbols
    8. /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /opt/local/include/tesseract/build/i386/Tesseract(pdfiostub.o) has no symbols
    9. /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /opt/local/include/tesseract/build/i386/Tesseract(pngio.o) has no symbols
    10. /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /opt/local/include/tesseract/build/i386/Tesseract(pnmiostub.o) has no symbols
    11. /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /opt/local/include/tesseract/build/i386/Tesseract(psio1stub.o) has no symbols
    12. /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /opt/local/include/tesseract/build/i386/Tesseract(psio2stub.o) has no symbols
    13. /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /opt/local/include/tesseract/build/i386/Tesseract(quadratc.o) has no symbols
    14. /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /opt/local/include/tesseract/build/i386/Tesseract(tiffio.o) has no symbols
    15. /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /opt/local/include/tesseract/build/i386/Tesseract(webpio.o) has no symbols
    16. /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /opt/local/include/tesseract/build/i386/Tesseract(zlibmem.o) has no symbols
    17. /opt/local/include/tesseract
    18. tar: Error opening archive: Failed to open 'Tesseract.tmpl'
    19. usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file target_file
    20. cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file ... target_directory
    21. usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file target_file
    22. cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file ... target_directory
    23. fatal error: lipo: can't create temporary output file: /opt/local/include/tesseract/Tesseract.framework/Versions/A/Tesseract.lipo (No such file or directory)
    Alles anzeigen


    Was habe ich falsch gemacht ( wenn ich überhaupt es richtig gemacht habe) ? ?(
  • Du willst doch nicht Tesseract sondern fftw bauen, oder? In dem Skript sind insbesondere die drei ersten Funktionen wichtig:

    Quellcode

    1. MINIMAL_TARGET=6.0
    2. export CFLAGS=-O2
    3. setup_environment() {
    4. sdk=$1
    5. arch=$2
    6. export CFLAGS="$CFLAGS -pipe -no-cpp-precomp -miphoneos-version-min=$MINIMAL_TARGET"
    7. export CXX="xcrun --sdk $sdk clang++ -arch $arch"
    8. export CC="xcrun --sdk $sdk clang -arch $arch"
    9. export LD="xcrun --sdk $sdk ld"
    10. export AR="xcrun --sdk $sdk ar"
    11. export AS="xcrun --sdk $sdk as"
    12. export NM="xcrun --sdk $sdk nm"
    13. export RANLIB="xcrun --sdk $sdk ranlib"
    14. export CPPFLAGS=$CFLAGS
    15. export CXXFLAGS=$CFLAGS
    16. }
    17. setup_ios() {
    18. setup_environment iphoneos -arch armv7 -arch armv7s -arch arm64
    19. }
    20. setup_simulator() {
    21. setup_environment iphonesimulator
    22. }
    Alles anzeigen


    Wenn Du das in ein eigenes Skript schreibst, und darin auch

    Quellcode

    1. setup_ios
    2. ./configure

    einfügst, sollte es Dir das Makefile für eine iOS-Version basteln. Das Skript musst Du natürlich in dem Ordner ausführen, wo sich das configure-Skript befindet, und ein bisschen mit Shell-Skripten, make(1) und den anderen schönen Dingen des Lebens solltest Du Dich auch auskennen. ;)
    „Meine Komplikation hatte eine Komplikation.“
  • macmoonshine schrieb:

    Du willst doch nicht Tesseract sondern fftw bauen, oder?

    Ja klar will ich fftw bauen. Das war dumm von mir.
    Aber danke für dein Geduld. Du gibst mir die Hoffnung dass es doch klappen kann :) .
    Also Ich hab gemacht was Du mir gesagt hast.

    Quellcode

    1. ​sudo ./configure
    und dann

    Quellcode

    1. make

    aber wo endet mein library? (/Users/bahmadios/usr/local/lib ?) ?(
    ​Shell-Skripten, make(1) und den anderen schönen Dingen des Lebens solltest Du Dich auch auskennen.

    Ich bin dabei. Und Ich weiss es fehlt mir noch viel . :)
  • josef907 schrieb:


    Also Ich hab gemacht was Du mir gesagt hast.

    Quellcode

    1. sudo ./configure

    Wofür soll das sudo(8) gut sein? Davon habe ich kein Wort geschrieben. Dein Makefile und andere Dateien gehören jetzt wahrscheinlich root.

    josef907 schrieb:

    und dann

    Quellcode

    1. make

    aber wo endet mein library? (/Users/bahmadios/usr/local/lib ?) ?(

    Am letzten Byte. +scnr+ ;)

    Spaß beiseite: Du hast ja kein make install aufgerufen, sondern nur make. (Finger weg von make install.)
    Die Lib schwirrt also in irgendeinem Build-Verzeichnis rum. Frag doch mal find(1):

    Quellcode

    1. find . -name 'lib*.*'


    josef907 schrieb:

    Ich bin dabei. Und Ich weiss es fehlt mir noch viel . :)

    Das sieht man leider am Einsatz von sudo. ;(
    „Meine Komplikation hatte eine Komplikation.“
  • macmoonshine schrieb:

    Das sieht man leider am Einsatz von sudo.



    MANNNNNNNNNNNNNNN
    DU HAST MEIN LEBEN GERETTET!

    Frag mich nicht woher ich das Wort sudo habe. Ich hab immer gedacht es ist zu verifizieren dass ich der Administrator bin. :S :S
    Sogar das war das Problem in dem Skript ( in meiner Frage). Gerade hat es funktioniert und ich habe alle Architekturen erzeugt. Ich danke dir ohne Ende . :love: <3
    MfG
    josef