Hallo, ich möchte openssl für ARM kompilieren, weiß aber nicht wie. Kann mir jemand bitte helfen? Es gibt da so viele Anleitungen im Internet, aber irgendwie klappt das nicht. Ich brauche openssl-1.0.1g und möchte es für ARM Linux haben. Danke an alle.
Na, was klappt den nicht? Gib mal etwas mehr Infos. Was ist das Hostsystem? Compilerfehler etc... Grüsse, R.
> Ich brauche openssl-1.0.1g Sicher? Aktuell ist die 1.0.1i Version. Willst Du alte Bug nachvollziehen? Außerdem ist ARM Linux != ARM Linux. Sowas wie OpenSSL will man normalerweise für die korrekte CPU Variante compilieren.
Oh, dann lade ich mal das aktuelle openSSL runter. Es soll auf einen ARM Cortex A9 laufen. Ich habe Cross-Compile noch nie gemacht. Also irgendwie ./configure --host=ARM-Linux oder so muss das aussehen, nicht?
Sabse schrieb: > Oh, dann lade ich mal das aktuelle openSSL runter. Lade auch gleich den richtigen arm-gcc runter.
Sabse schrieb: > Ich habe Cross-Compile noch nie gemacht. > Also irgendwie ./configure --host=ARM-Linux oder so muss das aussehen, > nicht? Nee, OpenSSL verwendet kein Autoconf. Du musst bei make über die Kommandozeile die CC Variable (und vermutlich noch ein paar andere) auf deinen ARM Compiler umbiegen.
So habe jetzt nochmal für die neue Version gelesen, und da steht man solle beim cross-compilieren erst ./Configure machen, das eine Liste mölicher Architecture liefert. Und dann ./Configure [arch] gefolgt von make. Ich bin mal so frei die Liste hier anzufügen:
1 | pick os/compiler from: |
2 | BC-32 BS2000-OSD BSD-generic32 BSD-generic64 BSD-ia64 BSD-sparc64 BSD-sparcv8 |
3 | BSD-x86 BSD-x86-elf BSD-x86_64 Cygwin Cygwin-pre1.3 DJGPP MPE/iX-gcc OS2-EMX |
4 | OS390-Unix QNX6 QNX6-i386 ReliantUNIX SINIX SINIX-N UWIN VC-CE VC-WIN32 |
5 | VC-WIN64A VC-WIN64I aix-cc aix-gcc aix3-cc aix64-cc aix64-gcc android |
6 | android-armv7 android-x86 aux3-gcc beos-x86-bone beos-x86-r5 bsdi-elf-gcc cc |
7 | cray-j90 cray-t3e darwin-i386-cc darwin-ppc-cc darwin64-ppc-cc |
8 | darwin64-x86_64-cc dgux-R3-gcc dgux-R4-gcc dgux-R4-x86-gcc dist gcc hpux-cc |
9 | hpux-gcc hpux-ia64-cc hpux-ia64-gcc hpux-parisc-cc hpux-parisc-cc-o4 |
10 | hpux-parisc-gcc hpux-parisc1_1-cc hpux-parisc1_1-gcc hpux-parisc2-cc |
11 | hpux-parisc2-gcc hpux64-ia64-cc hpux64-ia64-gcc hpux64-parisc2-cc |
12 | hpux64-parisc2-gcc hurd-x86 iphoneos-cross irix-cc irix-gcc irix-mips3-cc |
13 | irix-mips3-gcc irix64-mips4-cc irix64-mips4-gcc linux-alpha+bwx-ccc |
14 | linux-alpha+bwx-gcc linux-alpha-ccc linux-alpha-gcc linux-aout linux-armv4 |
15 | linux-elf linux-generic32 linux-generic64 linux-ia32-icc linux-ia64 |
16 | linux-ia64-ecc linux-ia64-icc linux-ppc linux-ppc64 linux-sparcv8 |
17 | linux-sparcv9 linux-x86_64 linux32-s390x linux64-s390x linux64-sparcv9 mingw |
18 | mingw64 ncr-scde netware-clib netware-clib-bsdsock netware-clib-bsdsock-gcc |
19 | netware-clib-gcc netware-libc netware-libc-bsdsock netware-libc-bsdsock-gcc |
20 | netware-libc-gcc newsos4-gcc nextstep nextstep3.3 osf1-alpha-cc osf1-alpha-gcc |
21 | purify qnx4 rhapsody-ppc-cc sco5-cc sco5-gcc solaris-sparcv7-cc |
22 | solaris-sparcv7-gcc solaris-sparcv8-cc solaris-sparcv8-gcc solaris-sparcv9-cc |
23 | solaris-sparcv9-gcc solaris-x86-cc solaris-x86-gcc solaris64-sparcv9-cc |
24 | solaris64-sparcv9-gcc solaris64-x86_64-cc solaris64-x86_64-gcc sunos-gcc |
25 | tandem-c89 tru64-alpha-cc uClinux-dist uClinux-dist64 ultrix-cc ultrix-gcc |
26 | unixware-2.0 unixware-2.1 unixware-7 unixware-7-gcc vos-gcc vxworks-mips |
27 | vxworks-ppc405 vxworks-ppc60x vxworks-ppc750 vxworks-ppc750-debug |
28 | vxworks-ppc860 vxworks-ppcgen vxworks-simlinux debug debug-BSD-x86-elf |
29 | debug-Cygwin debug-VC-WIN32 debug-VC-WIN64A debug-VC-WIN64I debug-ben |
30 | debug-ben-darwin64 debug-ben-debug debug-ben-debug-64 debug-ben-macos |
31 | debug-ben-macos-gcc46 debug-ben-no-opt debug-ben-openbsd |
32 | debug-ben-openbsd-debug debug-ben-strict debug-bodo debug-darwin-i386-cc |
33 | debug-darwin-ppc-cc debug-geoff32 debug-geoff64 debug-levitte-linux-elf |
34 | debug-levitte-linux-elf-extreme debug-levitte-linux-noasm |
35 | debug-levitte-linux-noasm-extreme debug-linux-elf debug-linux-elf-noefence |
36 | debug-linux-generic32 debug-linux-generic64 debug-linux-ia32-aes |
37 | debug-linux-pentium debug-linux-ppro debug-linux-x86_64 debug-rse |
38 | debug-solaris-sparcv8-cc debug-solaris-sparcv8-gcc debug-solaris-sparcv9-cc |
39 | debug-solaris-sparcv9-gcc debug-steve-opt debug-steve32 debug-steve64 |
40 | debug-ulf debug-vos-gcc |
41 | |
42 | NOTE: If in doubt, on Unix-ish systems use './config'. |
Wie gesagt, das soll für ein ARM Cortex A9 mit Linux mit gcc-linaro-arm-linux-gnueabihf_linux sein. Was soll ich denn da wählen?
1) Na dann teste einfach ob configure (nicht: "Configure") diesen Host kennt. 2) Bei --host= würd ich immer auch --build setzen, damit ganz klar gesagt ist, dass es sich um einen Cross-Build handelt. 3) Wenn configure den Host nicht kennt und es sich um ein Standard GNU Build-System handelt, dann gibt es eine config.sub. Erweitere diese für deinen Host. Wenn deine Toolchain Vanilla GCC ist, sollte das genügen. 4) Wenn es absehbar ist, dass du mehrmals neu configuren musst weil die Optionen etc. unklar sind, dann ist ./configure eine schlechte Wahl. Mache den Build von einem leeren Verzeichnis aus, das kein Unterverzeichnis der Quellen ist. Damit hast du mit Löschen des Build-Verzeichnisses tabula rasa. ./configure verpestet dir das Quellverzeichnis, und ob make clean / distclean / realclean oder-was-auch-immer-clean richtig funktionieren ist bei vielen Projekten Russisch Roulette... 5) Was für Build-Verzeichnis gilt, gilt auch für's Installationsverzeichnis. Zunächst eine --prefix wählen die nix kaputt macht und für die man keine Admin sind muss.
Johann L. schrieb: > 1) Na dann teste einfach ob configure (nicht: "Configure") diesen > Host > kennt. Da gibt es nur "config" und "Configure" (grosses C), siehe oben. Wie Testen? > 3) Wenn configure den Host nicht kennt und es sich um ein Standard GNU > Build-System handelt, dann gibt es eine config.sub. Erweitere diese für > deinen Host. Wenn deine Toolchain Vanilla GCC ist, sollte das genügen. config.sub gibt es nicht. Wie oben geschrieben muesste man Configure erweitern, aber das ist mir zu hoch.
Sabse schrieb: > Johann L. schrieb: >> 1) Na dann teste einfach ob configure (nicht: "Configure") diesen >> Host >> kennt. > > Da gibt es nur "config" und "Configure" (grosses C), siehe oben. > Wie Testen? > >> 3) Wenn configure den Host nicht kennt und es sich um ein Standard GNU >> Build-System handelt, dann gibt es eine config.sub. Erweitere diese für >> deinen Host. Wenn deine Toolchain Vanilla GCC ist, sollte das genügen. > > config.sub gibt es nicht. > Wie oben geschrieben muesste man Configure erweitern, aber das ist mir > zu hoch. ojeojeoje, hab mal nen Blick in die Quellen riskiert. Configure ist komplett Marke Eigenbau ...immerhin hat man dann was eigenes, wenn die Kinder mal aus dem Haus sind. Was im GNU Build-System config.sub erledigt schein da in config abgearbeitet zu werden anhand von MACHINE, RELEASE, VERSION und BUILD. Es gibt da genug Beispielcode wie verschiedene Systeme abzubilden sind, und CROSS_COMPILE lässt darauf hoffen dass Cross-Compilierung ohne Kopfstand zu machen möglich ist. Schließlich erlaubt Configure die Angabe des Compilers und weiterer Optionen, siehe z.B. Ende von config. Falls das alles zu mühselig ist oder zu unsicher (immerhin soll es ein ssl werden), würd ich mich an die Entwickler wenden. Nicht unüblich dafür sind Mailing-Listen. Die OpenSSL FAQ erwähnt zwar MLs und verweist auf Readme für Details; allerdings scheint es nur eine ML for OpenSSL-Entwickler zu geben, keine für dessen Anwender. Falls du Readme noch nicht gelesen hast, tu es. Dafür ist es da ;-) Dito für INSTALL. Falls das aller immer noch nicht hilft:
1 | SUPPORT |
2 | ------- |
3 | |
4 | See the OpenSSL website www.openssl.org for details of how to obtain |
5 | commercial technical support. |
Sabse schrieb: > Was soll ich denn da wählen? Nimm linux-armv4, das tut auch auf nem Cortex-A9 schneller als der reine C Code von linux-elf. Bei Interesse kann ich Ergebnisse von "openssl speed" von einem, äh, 800MHz A9 auf Pastebin hochladen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.