Crosscompiler mit danisahne Mod

Im WIki steht zum Toolchain erstellen:
"Hier unter “Advanced options” > “Compiler options” die Optionen für den Cross-Compiler wählen"

Da finde ich ich aber keine Option fuer den Cross compiler....
Daher dachte ich ich muss nen externen Compiler waehlen...
Wo finde ich die Option fuer den Cross Compiler?
 
Alles unter "Compiler options" beschäftigt sich mit dem Cross-Compiler. In der Regel mußt du hier nichts ändern.
 
Habe ich nun auch gemerkt...

FINISHED: toolchain/kernel/ - glibc compiler for the kernel
toolchain/target/ - uClibc compiler for the userspace
:)
 
Bei mir bricht make toolchain wie folgt ab:

cp ../../gcc-4.1.2/gcc/../fixincludes/README-fixinc include/README
chmod a+r include/README
echo timestamp > stmp-int-hdrs
make[2]: *** Keine Regel vorhanden, um das Target »/home/qwert/neues_ds_mod/ds26-14.4/toolchain/build/gcc-4.1.2-uClibc-0.9.28/mipsel-linux-uclibc/bin/mipsel-linux-uclibc-as«,
benötigt von »stamp-as«, zu erstellen. Schluss.
make[2]: Leaving directory `/home/qwert/neues_ds_mod/ds26-14.4/source/toolchain/gcc-4.1.2-initial/gcc'
make[1]: *** [all-gcc] Fehler 2
make[1]: Leaving directory `/home/qwert/neues_ds_mod/ds26-14.4/source/toolchain/gcc-4.1.2-initial'
make: *** [/home/qwert/neues_ds_mod/ds26-14.4/source/toolchain/gcc-4.1.2-initial/.compiled] Fehler 2


Weiß jemand was da schief läuft?
 
Mehr Kontext bitte (und im Code-Modus bzw. bei längeren Sachen als Anhang) und v.a. eine Signatur anlegen. Klick auf meine, dann kommst Du direkt zu der Stelle, wo das geht. Deine Hard- und Firmware wäre schon interessant zu kennen.
 
"make target-toolchain-distclean" und nochmal anfangen.

MfG Oliver
 
Damit hats geklappt, danke.
Ne Signatur werde ich mir auch nochmal machen.
 
Cross-Compiler wird nicht gefunden?

hi,

ich möchte binarys mit der toolchain für die 7170 mit 29.04.29 Firmware bauen.
Habe alles so gemacht wie hier beschrieben und eine toolchain erstellt

Das Problem:
wenn ich
Code:
export PATH=/mnt/xy/ds26-14.4/toolchain/target/bin:$PATH
und
Code:
LDFLAGS=-static ./configure --build=i386-linux-gnu --target=mipsel-linux --host=mipsel-linux
ausführe wird nicht der Cross Compiler benutzt , bzw. nicht gefunden? sondern der Systemeigene Compiler wird genutzt.
Code:
checking for gcc... (cached) gcc
checking whether the C compiler (gcc  -static) works... yes
checking whether the C compiler (gcc  -static) is a cross-compiler... no
Habe das mit verschiedenen Quellcodes ausprobiert.
Auch ohne "LDFLAGS=-static" habe ich das gleiche ergebniss.
Ein
Code:
mipsel-linux-gcc -v
ergibt:
Code:
Using built-in specs.
Target: mipsel-linux-uclibc
Configured with: ../gcc-4.1.1/configure --prefix=/home/oliver/fritz/ds-0.2.9_26-13/toolchain/build/gcc-4.1.1-uClibc-0.9.28/mipsel-linux-uclibc --build=i386-pc-linux-gnu --host=i386-pc-linux-gnu --target=mipsel-linux-uclibc --enable-languages=c,c++ --enable-shared --disable-__cxa_atexit --enable-target-optspace --with-gnu-ld --disable-nls --enable-sjlj-exceptions
Thread model: posix
gcc version 4.1.1

Wenn ich
Code:
make precompiled
ausführe werden die ausgewählten binarys erstellt und funktionieren auf der FritzBox.
Getestet mit busybox,bftpd und openvpn .

Das Ganze auf einem "debian etch" und in chroot "debian sid" ausprobiert ,immer das gleiche Ergebniss. Was mache ich falsch?

by Fishi
 
Zuletzt bearbeitet:
Ich baue so gut wie nie etwas außerhalb des DS-Mod mit dessen Toolchain, aber ein altes Build-Skript für Haserl habe ich noch gefunden. Darin steht das Folgende, das Du anpassen kannst:
Code:
#!/bin/bash

# Diese beiden anpassen!
export HASERL_BASE_DIR=~/haserl-0.9.16
export DS_MOD_DIR=~/ds/0.2.9_26

# Erst mal aufräumen
cd $HASERL_BASE_DIR
make clean
rm -f config.{cache,status}

# Konfigurieren
export PATH="$DS_MOD_DIR/toolchain/target/bin:$PATH"
export CFLAGS="-Os -W -Wall -pipe -Wa,--trap -msoft-float -mips32 -mtune=mips32"
export LDFLAGS="-static-libgcc"
export HOST_ARCH=$(gcc -dumpmachine | sed -e s'/-.*//' \
  -e 's/sparc.*/sparc/' \
  -e 's/arm.*/arm/g' \
  -e 's/m68k.*/m68k/' \
  -e 's/ppc/powerpc/g' \
  -e 's/v850.*/v850/g' \
  -e 's/sh[234]/sh/' \
  -e 's/mips-.*/mips/' \
  -e 's/mipsel-.*/mipsel/' \
  -e 's/cris.*/cris/' \
  -e 's/i[3-9]86/i386/' \
  )
./configure \
  --target=mipsel-linux \
  --host=mipsel-linux \
  --build=$HOST_ARCH-pc-linux-gnu \
  --program-prefix="" \
  --program-suffix="" \
  --prefix=/usr \
  --exec-prefix=/usr \
  --bindir=/usr/bin \
  --datadir=/usr/share \
  --includedir=/usr/include \
  --infodir=/usr/share/info \
  --libdir=/usr/lib \
  --libexecdir=/usr/lib \
  --localstatedir=/var \
  --mandir=/usr/share/man \
  --sbindir=/usr/sbin \
  --sysconfdir=/etc \

# Dann wollen wir mal bauen
make

# You can leave your hat on...
mipsel-linux-uclibc-strip \
  --remove-section=.comment \
  --remove-section=.note \
  src/haserl

Evtl. wäre es aber auch nicht so schwierig, gleich innerhalb der Mod-Verzeichnisstruktur zu bleiben und dort ein Add-On oder Package aufzuziehen, dann brauchst du nur Makefile-Vorlagen (*.mk) von ähnlichen Paketen zu kopieren und anzupassen, mußt Dich um die Umgebungsvariablen nicht mehr manuell kümmern.

Viel Erfolg!
 
Hi.
Da steht gcc (cached). Also erstmal die config.cache löschen. Falls das Problem dann immer noch auftritt kannst du den CC explizit setzen mit "CC=mipsel-linux-gcc LDFLAGS=-static ./configure --build=i386-linux-gnu --target=mipsel-linux ...".

MfG Oliver
 
alles klar!

hi,
erst mal danke für die schnellen und hilfreichen antworten.

@olistudent
mit
Code:
CC=mipsel-linux-gcc...
klappt es .. ,habe mal bftpd übersetzt und funktioniert tadellos.

@kriegaex
Dein Build-Skript ist ja echt nützlich
Jetzt weiß ich auch wie ich ein Add-On Package einbaue

danke für die Infos.

Das sind halt meine ersten "gehversuche" :cool:

by Fishi
 
library problem

hi,

wenn ich lynx übersetze und das lynx binary auf der FritzBox starte bekomme ich immer die Meldung:

Code:
./lynx: can't load library 'libncurses.so.5'


wie bekomme ich libncurses.so.5 in den Pfad? oder muß ich beim compilieren etwas anders machen?

by Fishi
 
Ja, libncurses bauen und mit installieren. Oder einfach DS-Mod nehmen, da ist ein Lynx-Paket drin, welches auch automatisch ncurses mit baut und installiert.
 
...das habe ich bereits im ds-mod probiert ,libncurses wird gebaut soweit kein problem.
Aber wie muss ich es installieren? damit es gefunden wird .
Ich habe ja nur bedingte schreibrechte auf der FritzBox.
 
Wenn Du es ohne Firmware-Modifikation machen willst, mußt Du die Bibliotheken genauso nachladen oder hinüber kopieren wie das Binary auch und dann dafür sorgen, daß der LD_LIBRARY_PATH darauf zeigt. Standardmäßig zeigt er auf /mod/lib, am einfachsten kopierst Du Deine Bibliotheken dorthin.
 
rüberkopiert habe ich die Dateien allerdings ging das ja nicht nach /mod/usr/lib (orginal Firmware) und keine Schreibrechte.

export LD_LIBRARY_PATH=/.... hilft , jetzt funzt es ...prima

by Fishi
 
/mod/lib, nicht /mod/usr/lib. Bei Ersterem stimmt der LD_LIBRARY_PATH bereits, bei Letzterem nicht.

Edit: Ach so, Du hast ja gerade keinen Mod, also auch kein /mod, entschuldige. Ich vergesse immer wieder, daß Du hier ja off-topic bist.
 
Hi,

Soweit hat das bei mir dank der guten Beschreibung mit Crosscompiler geklappt

Nun läuft mein C Testprogramm aber mit
#include <asm/io.h>

Wie wird so was nachträglich mit eingestrickt das es compilert werden kann.

Code:
#include <stdio.h> 
#include <sys/io.h> 

int main () 
{ 
  int rein; 

  ioperm(0x378,3,1); 
  rein=inb(0x379); 
  printf("%d\n",rein); 

  return 0; 
}
 
Wie es scheint, gibt es kein ioperm für mips (siehe hier). Genauso wenig wie es bei deinem letzten Problem outb gab. ;-)

MfG Oliver
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.