Problem beim Kompilieren von Ruby 1.9.3 mit Freetz-Toolchain

daspfanni2000

Neuer User
Mitglied seit
24 Apr 2012
Beiträge
21
Punkte für Reaktionen
0
Punkte
1
Hallo Zusammen,

ich bin Neuling, was das Cross-Compilieren von Software für Fritzboxen angeht. Im Prinzip bin ich zu fast jedem der unten aufgeführten Schritte bis zu meinem Problem an Feedback interessiert. :)

Mein erstes Ziel ist folgendes: Ich möchte das aktuelle Ruby 1.9.3 auf dem USB Stick an meiner Fritzbox installieren.

Bei der Fritzbox handelt es sich um eine 7270 v3 mit Version 05.21. Die offizielle AVM Firmware möchte ich behalten, also kein Freetz-Image bauen und aufspielen.

Ich habe mir also eine Virtualbox VM mit dem aktuellen Debian Linux installiert. Ruby 1.9.3 habe ich per rvm problemlos installieren können. Dann habe ich nach Anleitung http://freetz.org/wiki/help/howtos/common/install die Dependencies für Freetz installiert und Freetz in Version freetz-1.2_rc2.tar.bz2 heruntergeladen und ausgepackt.

Mit make menuconfig habe ich meine Box ausgewählt, dann unter Advanced Options folgendes ausgewählt: Unter den Shared Libraries die, die Ruby wahrscheinlich benötigt und noch ein paar interessante Libraries mehr. Dann unter Toolchain: "selbst bauen", uclibc 0.9.32 (da die Fritzbox diese auch einsetzt) und den Target-Compiler auf gcc 4.6.1 und "build binutils and gcc for target".

Frage hier: Habe ich bei make-menuconfig die Einstellungen (in Bezug auf meine Box und mein Vorhaben) so korrekt vorgenommen, wenn ich nur "eigene" Software - also kein Freetz-Image - bauen möchte?

Übrigens: "Build static toolchain" in Menuconfig auszuwählen funktioniert nicht: make toolchain bricht dann ab, schon beim konfigurieren. Wofür möchte man eigentlich eine statische Toolchain bauen? Das verstehe ich nicht ganz - Erklärung wäre herzlich willkommen:).

Ich baue die Toolchain dann mit "make toolchain" und danach die Libraries mit "make libs". HelloWorld kompiliert und läuft fein auf der FB.

Dann entpacke ich Ruby 1.9.3 in ein Verzeichnis und konfiguriere es mit folgendem Befehl:

export PATH=/home/pfanni/src/freetz-1.2_rc2/toolchain/target/bin:$PATH

./configure --build=i386-linux-gnu --target=mipsel-linux --host=mipsel-linux --disable-rpath CC="mipsel-linux-gcc" LDFLAGS=-static CFLAGS="-Os -pipe -march=4kc -Wa,--trap" --prefix=/home/pfanni/src/ruby/fertig --exec_prefix=/home/pfanni/src/ruby/fertig

Frage: Sind das für mein Vorhaben sinnvolle Options und Variablen? Habe ich für die 7270 v3 korrekte CFLAGS gewählt? Ich sehe im Freetz-Ruby Packet ist noch "--enable-shared" dabei. Was meint Ihr? Das ich Ruby statisch kompilieren muss/sollte, ist richtig, oder?

Beim "make" dann bricht das ganze schon beim ersten Versuch zu Linken mit folgendem Fehler ab.

pfanni@debian:~/src/ruby-1.9.3-p194$ make
CC = mipsel-linux-gcc
LD = ld
LDSHARED = mipsel-linux-gcc -shared
CFLAGS = -Os -pipe -march=4kc -Wa,--trap
XCFLAGS = -include ruby/config.h -include ruby/missing.h -fvisibility=hidden -DRUBY_EXPORT
CPPFLAGS = -I. -I.ext/include/mipsel-linux -I./include -I.
DLDFLAGS =
SOLIBS =
config.status: creating mipsel-linux-fake.rb
rbconfig.rb updated
generating enc.mk
compiling dln.c
compiling encoding.c
compiling version.c
compiling array.c
compiling bignum.c
compiling class.c
compiling compar.c
compiling complex.c
compiling dir.c
compiling dln_find.c
compiling enum.c
compiling enumerator.c
compiling error.c
compiling eval.c
compiling load.c
compiling proc.c
compiling file.c
compiling gc.c
compiling hash.c
compiling inits.c
compiling io.c
compiling marshal.c
compiling math.c
compiling node.c
compiling numeric.c
compiling object.c
compiling pack.c
compiling parse.c
compiling process.c
compiling random.c
compiling range.c
compiling rational.c
compiling re.c
compiling regcomp.c
compiling regenc.c
compiling regerror.c
compiling regexec.c
compiling regparse.c
compiling regsyntax.c
compiling ruby.c
compiling safe.c
compiling signal.c
compiling sprintf.c
compiling st.c
compiling strftime.c
compiling string.c
compiling struct.c
compiling time.c
compiling transcode.c
compiling util.c
compiling variable.c
compiling compile.c
compiling debug.c
compiling iseq.c
compiling vm.c
compiling vm_dump.c
compiling thread.c
compiling cont.c
compiling ./enc/ascii.c
compiling ./enc/us_ascii.c
compiling ./enc/unicode.c
compiling ./enc/utf_8.c
compiling newline.c
compiling ./missing/memcmp.c
compiling ./missing/isnan.c
compiling ./missing/finite.c
compiling ./missing/isinf.c
compiling ./missing/setproctitle.c
compiling addr2line.c
generating prelude.c
compiling prelude.c
compiling dmyext.c
linking static-library libruby-static.a
generating encdb.h
encdb.h unchanged
making enc
make[1]: Entering directory `/home/pfanni/src/ruby-1.9.3-p194'
compiling ./enc/encdb.c
linking encoding encdb.so
/home/pfanni/src/freetz-1.2_rc2/toolchain/build/mipsel_gcc-4.6.1_uClibc-0.9.32/mipsel-linux-uclibc/lib/gcc/mipsel-linux-uclibc/4.6.1/../../../../mipsel-linux-uclibc/bin/ld: /home/pfanni/src/freetz-1.2_rc2/toolchain/build/mipsel_gcc-4.6.1_uClibc-0.9.32/mipsel-linux-uclibc/lib/gcc/mipsel-linux-uclibc/4.6.1/crtbeginT.o: relocation R_MIPS_HI16 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/home/pfanni/src/freetz-1.2_rc2/toolchain/build/mipsel_gcc-4.6.1_uClibc-0.9.32/mipsel-linux-uclibc/lib/gcc/mipsel-linux-uclibc/4.6.1/crtbeginT.o: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[1]: *** [.ext/mipsel-linux/enc/encdb.so] Fehler 1
make[1]: Leaving directory `/home/pfanni/src/ruby-1.9.3-p194'
make: *** [enc] Fehler 2


Ich bin komplett ratlos. Muss ich andere Einstellungen in menuconfig vornehmen? Eine Datei manuell anpassen? Sind die freetz-Libraries falsch kompiliert? Was übersehe ich und wie bekomme ich Ruby für die Box richtig kompiliert.
Ich würde mich sehr über Hilfe freuen!

Bitte sagt bescheid, wenn Ihr weitere Infos benötigt!

Vielen Dank!
Gruss, Pfanni
 

Anhänge

  • pfanni_freetz.config.txt
    26.5 KB · Aufrufe: 0
Zuletzt bearbeitet:
Höchstwahrscheinlich liegt es daran, dass wenn Du die Option --enable-shared nicht angibst, diese per defaul dennoch aktiviert ist. --enable-shared in Kombination mit LDFLAGS=-static geht definitiv nicht. Versuch mal explizit --disable-shared, --enable-static als Parameter dem configure zu übergeben.
 
--enable-static versteht das configure Skript von Ruby 1.9.3 leider nicht.

--disable-shared führt auch zur selben Fehlermeldung.

Habe mal zum Spaß auf -static und alle Variablen verzichtet. Ich glaub ich Träume, denn jetzt kompiliert und linkt er fleißig vor sich hin. Ich sehe allerdings auch, dass ich noch ein paar libraries mehr kompilieren muss. Mist, jetzt hat er eine handfeste Fehlermeldung gebracht. Das muss ich mir mal genauer ansehen.

Wenn es static nicht wird: kann ich dann die libs einfach mit auf den USB Stick packen? Wie kann ich Ruby dann sagen, wo es die libs finden kann?

Was kann ich noch versuchen um es static zu bekommen? Bedeutet die Fehlermeldung eigentlich, dass ich die freetz libraries nochmal mit -fPIC kompilieren sollte oder Ruby?

Vielen dank für die Unterstützung!
 
Zuletzt bearbeitet:
So wie ich das kenne musst du die Objects für die Ruby shared library (encdb.so) mit -fPIC bauen.

Den Library-Path setzt man mit "export LD_LIBRARY_PATH=/xyz/lib".

Gruß
Oliver
 
Hallo Oliver,

Danke für den Export Trick.

So wie ich das kenne musst du die Objects für die Ruby shared library (encdb.so) mit -fPIC bauen.

Kannst du mich bitte draufstossen, wo/wann das zu passieren hat?
Beim bauen von Ruby nehme ich an;-) aber wie geht das?

Danke dir!
Gruß pfanni
 
Die cflags müssen um "-fPIC" erweitert werden.

Gruß
Oliver
 
in make menuconfig für die toolchain?

oder beim bau von Ruby?

Gruss, Pfanni
 
Bei den CFLAGS die du dem ruby-configure Skript übergibst.

Gruß
Oliver
 
Danke Oliver, das versuche ich nochmal.

Ich habe nochmal einiges verändert: Ich habe den freetz Trunk ausgecheckt und die Toolchain damit gebaut.
Dynamisch konnte ich Ruby dann tatsächlich kompilieren (den statischen Anlauf nehme ich später nochmal). Auf der Fritzbox lief Ruby dann allerdings nicht. ruby - v funktionierte, aber schon ein ruby -e "puts ''test" scheitert. Ruby kann seine eigene Dateien nicht finden. Habe dann mit den Environment Variablen RUBYLIB, GEM_HOME, GEM_PATH herumgespielt, aber keine Chance.

Ich glaube ich weiss jetzt auch die Quelle meines Problems aber keine Lösung: Ich benutze doch beim Compilieren --prefix und --exec-prefix, um beim make install die Dateien in einen Ordner zu kopieren, welchen ich dann auf den USB Stick meiner Fritzbox kopieren kann. Mittels grep -r "meingewählterprefixpfad" in den Ruby Dateien stelle ich ernüchtert fest, das sich die Präfix-Pfade fest in die Ruby-Binaries und Skripte eingetragen hat. Wie konfiguriere ich Ruby denn richtig, damit ich es dann auf den Stick der Box installieren kann?

Die gleiche Problematik vermute ich jetzt auch bei den Shared Libraries, die ich von Freetz kompilieren lasse. Kann ich die auch so einfach aus Trunk/toolchain/target herauskopieren um sie auf den Stick der Fritzbox zu packen? Oder kann ich vor make libs im Menuconfig irgendwie dafür sorgen, dass in diesen Libs der korrekte Pfad auf meinen USB Stick an der Fritzbox verewigt wird?

(Gefühlt) so nah am Ziel und doch so fern:-( Ich bitte Euch nochmal um Hilfe!

Gruss,
Pfanni
 
Ich benutze doch beim Compilieren --prefix und --exec-prefix, um beim make install die Dateien in einen Ordner zu kopieren, welchen ich dann auf den USB Stick meiner Fritzbox kopieren kann. Mittels grep -r "meingewählterprefixpfad" in den Ruby Dateien stelle ich ernüchtert fest, das sich die Präfix-Pfade fest in die Ruby-Binaries und Skripte eingetragen hat. Wie konfiguriere ich Ruby denn richtig, damit ich es dann auf den Stick der Box installieren kann?
Wozu sollten denn die Prefix Optionen angegeben werden, wenn sie nicht die Erstellung des Programms beeinflussen?
Trage dort nicht irgend einen Pfad ein, sondern den, wo nachher auch die Dateien gefunden werden.
 
Danke für die deutlichen Worte. Ich bin von apt-get und App-Store verweichlicht;-)

Ich habe nun folgendes herausgefunden:
Bauen von ruby mit ergänztem -fPIC in den CFLAGS bringt nichts. Der Fehler bleibt.

Also habe ich jetzt mal im make menuconfig die Target Toolchain CFLAGS um -fPIC ergänzt. Und siehe da ruby kompiliert statisch:

debian:~/src/ruby-1.9.3-p194$ file ruby
ruby: ELF 32-bit LSB executable, MIPS, MIPS32 version 1, statically linked, with unknown capability 0xf41 = 0x756e6700, with unknown capability 0x70100 = 0x3040000, not stripped

Allerdings frage an Euch Experten: Ist das überhaupt eine gute Idee, -fPIC in die Target Toolchain Settings einzutragen? Erkauft man sich damit vielleicht viele Nachteile?

Das bedeutet jetzt vermutlich, dass wenn ich ruby statisch kompiliere und die --prefix-Pfade beim ruby-Konfigurieren so setzte, wie sie in der FB vorzufinden sind, ich ans Ziel kommen könnte. Ich bin mal gespannt.
 
Nein, -fPIC in den Target Toolchain Settings einzutragen ist keine gute Idee, sonst stünde es vermutlich schon dort.

Genau genommen ist -fPIC nur notwendig, wenn man dynamische Libraries erstellen will. Normalerweise braucht man die Option nicht für statische Libraries oder Programme. Ich vermute, in diesem Fall wird es nur deswegen benötigt, weil das Ruby Build-System dynamische Libraries erstellen will und dies durch die -static Option übersteuert wird.

Meine Empfehlung wäre, als Präfix etwas in der Art /var/media/ruby zu setzen und auf der Box einen Symlink von /var/media/ruby auf das Verzeichnis zu setzen, wo sich die benötigten Dateien tatsächlich befinden. Vermutlich funktioniert es dann auch ohne alles statisch zu erstellen.
 
Ich verzweifle langsam. Wenn es ein Ruby 1.9.3 im Freetz gäbe, würde ich jetzt auch Freetz auf der FB installieren;-)

Folgendes habe ich gestern erreicht.
Toolchain mit -fPIC gebaut und dann Ruby folgendermassen konfiguriert:

./configure --build=i386-linux-gnu --target=mipsel-linux --host=mipsel-linux CC="mipsel-linux-gcc" --disable-shared --disable-ipv6 LDFLAGS=-static CFLAGS="-Os -pipe -march=4kc -Wa,--trap" --prefix=/var/media/NEW_LINK/MODS --exec_prefix=/var/media/NEW_LINK/MODS

Das gebaute Ruby auf der Fritzbox funktioniert aber nicht. Google hilft mir da nicht weiter. Vielleicht wisst Ihr, was da schief läuft:

# ruby -e "puts 'test'"
: can't resolve symbol 'rb_encdb_declare'
# gem
: can't resolve symbol 'rb_encdb_declare'


# grep -r rb_encdb_declare /var/media/NEW_LINK/MODS
/var/media/NEW_LINK/MODS/bin/ruby:rb_encdb_declare
/var/media/NEW_LINK/MODS/lib/ruby/1.9.1/mipsel-linux/enc/encdb.so:rb_encdb_declare
/var/media/NEW_LINK/MODS/lib/ruby/1.9.1/mipsel-linux/enc/encdb.so:rb_encdb_declare
/var/media/NEW_LINK/MODS/lib/libruby-static.a:rb_encdb_declare
/var/media/NEW_LINK/MODS/lib/libruby-static.a:rb_encdb_declare

Die "gegrepten" Verzeichnisse habe ich wahlweise in LD_LIBRARY_PATH und RUBYLIB exportiert - ohne dass Ruby die Libs gefunden hätte. Was läuft da schief?
 
Das sieht für mich so aus als wäre diese encdb.so (.a) nicht statisch gelinkt worden.

Gruß
Oliver
 
Hi Oliver,

bin wieder ein ganzes Stück weiter. Ich habe es jetzt dynamisch gelingt und habe auf die -fPIC Option bei der Toolchain verzichtet. Es sieht jetzt ziemlich gut aus, jedoch beim Versuch ein bestimmtes Gem (die Gems "bundler" und "rake" liessen sich problemlos installieren) mittels gem install zu bauen, gibt es wieder eine ominöse (da Google sie so nicht kennt) Fehlermeldung:



ERROR: Failed to build gem native extension.

/var/media/NEW_LINK/MODS/bin/ruby extconf.rb
checking for rb_trap_immediate in ruby.h,rubysig.h... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/var/media/NEW_LINK/MODS/bin/ruby
/var/media/NEW_LINK/MODS/lib/ruby/1.9.1/mkmf.rb:381:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
from /var/media/NEW_LINK/MODS/lib/ruby/1.9.1/mkmf.rb:491:in `block in try_compile'
from /var/media/NEW_LINK/MODS/lib/ruby/1.9.1/mkmf.rb:443:in `with_werror'
from /var/media/NEW_LINK/MODS/lib/ruby/1.9.1/mkmf.rb:491:in `try_compile'
from /var/media/NEW_LINK/MODS/lib/ruby/1.9.1/mkmf.rb:636:in `try_var'
from /var/media/NEW_LINK/MODS/lib/ruby/1.9.1/mkmf.rb:913:in `block in have_var'
from /var/media/NEW_LINK/MODS/lib/ruby/1.9.1/mkmf.rb:790:in `block in checking_for'
from /var/media/NEW_LINK/MODS/lib/ruby/1.9.1/mkmf.rb:284:in `block (2 levels) in postpone'
from /var/media/NEW_LINK/MODS/lib/ruby/1.9.1/mkmf.rb:254:in `open'
from /var/media/NEW_LINK/MODS/lib/ruby/1.9.1/mkmf.rb:284:in `block in postpone'
from /var/media/NEW_LINK/MODS/lib/ruby/1.9.1/mkmf.rb:254:in `open'
from /var/media/NEW_LINK/MODS/lib/ruby/1.9.1/mkmf.rb:280:in `postpone'
from /var/media/NEW_LINK/MODS/lib/ruby/1.9.1/mkmf.rb:789:in `checking_for'
from /var/media/NEW_LINK/MODS/lib/ruby/1.9.1/mkmf.rb:912:in `have_var'
from extconf.rb:16:in `<main>'


Gem files will remain installed in /var/media/NEW_LINK/MODS/lib/ruby/gems/1.9.1/gems/eventmachine-0.12.10 for inspection.
Results logged to /var/media/NEW_LINK/MODS/lib/ruby/gems/1.9.1/gems/eventmachine-0.12.10/ext/gem_make.out
#


und


# cat ./lib/ruby/gems/1.9.1/gems/eventmachine-0.12.10/ext/mkmf.log
"mipsel-linux-gcc -o conftest -I/var/media/NEW_LINK/MODS/include/ruby-1.9.1/mipsel-linux -I/var/media/NEW_LINK/MODS/include/ruby-1.9.1/ruby/backward -I/var/media/NEW_LINK/MODS/include/ruby-1.9.1 -I. -D_FILE_OFFSET_BITS=64 -Os -pipe -march=4kc -Wa,--trap conftest.c -L. -L/var/media/NEW_LINK/MODS/lib -Wl,-R/var/media/NEW_LINK/MODS/lib -L. -rdynamic -Wl,-export-dynamic -Wl,-R -Wl,/var/media/NEW_LINK/MODS/lib -L/var/media/NEW_LINK/MODS/lib -lruby-static -lpthread -lrt -ldl -lcrypt -lm -lc"
/var/media/NEW_LINK/MODS/lib/ruby/1.9.1/mkmf.rb:317: warning: Insecure world writable dir /var/media/NEW_LINK in PATH, mode 040777
/var/media/NEW_LINK/MODS/bin/mipsel-linux-gcc: line 1: syntax error: unexpected "("
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: int main() {return 0;}
/* end */



Für mich am meisten als Indiz zu gebrauchen ist : "You have to install development tools first."

Also habe ich nochmal per svn den trunk ausgeheckt und habe bei den Advanced Options für die Toolchain "build binutils and gcc for target" ausgewählt.

Leider läuft dann "make toolchain NICHT durch! Hier bräuchte ich dringend Unterstützung - ich vermute ein Bug im aktuellen Trunk.

Anbei meine .config

Danke für Euren Support!!
 
Hi Oliver,

bin wieder ein ganzes Stück weiter. Ich habe es jetzt dynamisch gelingt und habe auf die -fPIC Option bei der Toolchain verzichtet. Es sieht jetzt ziemlich gut aus, jedoch beim Versuch ein bestimmtes Gem (die Gems "bundler" und "rake" liessen sich problemlos installieren) mittels gem install zu bauen, gibt es wieder eine ominöse (da Google sie so nicht kennt) Fehlermeldung:



ERROR: Failed to build gem native extension.

/var/media/NEW_LINK/MODS/bin/ruby extconf.rb
checking for rb_trap_immediate in ruby.h,rubysig.h... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/var/media/NEW_LINK/MODS/bin/ruby
/var/media/NEW_LINK/MODS/lib/ruby/1.9.1/mkmf.rb:381:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
from /var/media/NEW_LINK/MODS/lib/ruby/1.9.1/mkmf.rb:491:in `block in try_compile'
from /var/media/NEW_LINK/MODS/lib/ruby/1.9.1/mkmf.rb:443:in `with_werror'
from /var/media/NEW_LINK/MODS/lib/ruby/1.9.1/mkmf.rb:491:in `try_compile'
from /var/media/NEW_LINK/MODS/lib/ruby/1.9.1/mkmf.rb:636:in `try_var'
from /var/media/NEW_LINK/MODS/lib/ruby/1.9.1/mkmf.rb:913:in `block in have_var'
from /var/media/NEW_LINK/MODS/lib/ruby/1.9.1/mkmf.rb:790:in `block in checking_for'
from /var/media/NEW_LINK/MODS/lib/ruby/1.9.1/mkmf.rb:284:in `block (2 levels) in postpone'
from /var/media/NEW_LINK/MODS/lib/ruby/1.9.1/mkmf.rb:254:in `open'
from /var/media/NEW_LINK/MODS/lib/ruby/1.9.1/mkmf.rb:284:in `block in postpone'
from /var/media/NEW_LINK/MODS/lib/ruby/1.9.1/mkmf.rb:254:in `open'
from /var/media/NEW_LINK/MODS/lib/ruby/1.9.1/mkmf.rb:280:in `postpone'
from /var/media/NEW_LINK/MODS/lib/ruby/1.9.1/mkmf.rb:789:in `checking_for'
from /var/media/NEW_LINK/MODS/lib/ruby/1.9.1/mkmf.rb:912:in `have_var'
from extconf.rb:16:in `<main>'


Gem files will remain installed in /var/media/NEW_LINK/MODS/lib/ruby/gems/1.9.1/gems/eventmachine-0.12.10 for inspection.
Results logged to /var/media/NEW_LINK/MODS/lib/ruby/gems/1.9.1/gems/eventmachine-0.12.10/ext/gem_make.out
#


und


# cat ./lib/ruby/gems/1.9.1/gems/eventmachine-0.12.10/ext/mkmf.log
"mipsel-linux-gcc -o conftest -I/var/media/NEW_LINK/MODS/include/ruby-1.9.1/mipsel-linux -I/var/media/NEW_LINK/MODS/include/ruby-1.9.1/ruby/backward -I/var/media/NEW_LINK/MODS/include/ruby-1.9.1 -I. -D_FILE_OFFSET_BITS=64 -Os -pipe -march=4kc -Wa,--trap conftest.c -L. -L/var/media/NEW_LINK/MODS/lib -Wl,-R/var/media/NEW_LINK/MODS/lib -L. -rdynamic -Wl,-export-dynamic -Wl,-R -Wl,/var/media/NEW_LINK/MODS/lib -L/var/media/NEW_LINK/MODS/lib -lruby-static -lpthread -lrt -ldl -lcrypt -lm -lc"
/var/media/NEW_LINK/MODS/lib/ruby/1.9.1/mkmf.rb:317: warning: Insecure world writable dir /var/media/NEW_LINK in PATH, mode 040777
/var/media/NEW_LINK/MODS/bin/mipsel-linux-gcc: line 1: syntax error: unexpected "("
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: int main() {return 0;}
/* end */



Für mich am meisten als Indiz zu gebrauchen ist : "You have to install development tools first."

Also habe ich nochmal per svn den trunk ausgeheckt und habe bei den Advanced Options für die Toolchain "build binutils and gcc for target" ausgewählt.

Leider läuft dann "make toolchain NICHT durch! Hier bräuchte ich dringend Unterstützung - ich vermute ein Bug im aktuellen Trunk.

Anbei meine .config

Danke für Euren Support!!





Ach ja: das sind die letzten Zeilen beim bauen:

---> library/db: preparing... tools/gunzip -c dl/db-4.8.30.tar.gz | tar -C source/target-mipsel_uClibc-0.9.32.1 -x
set -e; shopt -s nullglob; for i in make/libs/db/patches/*.db.patch; do tools/freetz_patch source/target-mipsel_uClibc-0.9.32.1/db-4.8.30 $i; done
applying patch file make/libs/db/patches/100-no_docs.db.patch
patching file dist/Makefile.in
----------------------------------------------------------------------
configuring... (conf_cmd() { ./configure "$@" || { printf "\n\\033[33m%s\\033[m\n" "ERROR: Build failed."; exit 1; } }; cd source/target-mipsel_uClibc-0.9.32.1/db-4.8.30; rm -f config.{cache,status} ; ln -sf ../dist/configure build_unix/ ; cd build_unix; PATH=""/home/pfanni/src/trunk/toolchain/build/mipsel_gcc-4.6.3_uClibc-0.9.32.1/mipsel-linux-uclibc/bin:/home/pfanni/src/trunk/toolchain/build/mipsel_gcc-4.4.7/mipsel-unknown-linux-gnu/bin:/home/pfanni/.rvm/gems/ruby-1.9.3-p194/bin:/home/pfanni/.rvm/gems/ruby-1.9.3-p194@global/bin:/home/pfanni/.rvm/rubies/ruby-1.9.3-p194/bin:/home/pfanni/.rvm/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"" CC="/home/pfanni/src/trunk/toolchain/build/mipsel_gcc-4.6.3_uClibc-0.9.32.1/mipsel-linux-uclibc/bin/mipsel-linux-uclibc-gcc" CXX="/home/pfanni/src/trunk/toolchain/build/mipsel_gcc-4.6.3_uClibc-0.9.32.1/mipsel-linux-uclibc/bin/mipsel-linux-uclibc-g++-wrapper" CFLAGS="-march=4kc -Os -pipe -Wa,--trap -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64" CXXFLAGS="-march=4kc -Os -pipe -Wa,--trap -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64" LDFLAGS="" PKG_CONFIG_PATH="/home/pfanni/src/trunk/toolchain/build/mipsel_gcc-4.6.3_uClibc-0.9.32.1/mipsel-linux-uclibc/bin/../lib/pkgconfig" PKG_CONFIG_LIBDIR="/home/pfanni/src/trunk/toolchain/build/mipsel_gcc-4.6.3_uClibc-0.9.32.1/mipsel-linux-uclibc/bin/../lib/pkgconfig" FREETZ_TARGET_LFS="y" CONFIG_SITE=/home/pfanni/src/trunk/include/site/mipsel-linux-uclibc conf_cmd --cache-file=/home/pfanni/src/trunk/source/target-mipsel_uClibc-0.9.32.1/config.cache --target=mipsel-linux --host=mipsel-linux --build=i386-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 --with-gnu-ld --disable-nls --srcdir=../dist/ --enable-static --with-mutex=MIPS/gcc-assembly --disable-cxx --disable-compat185 --disable-tcl --enable-smallbuild && { cd /home/pfanni/src/trunk/source/target-mipsel_uClibc-0.9.32.1/db-4.8.30; } )
configure: WARNING: unrecognized options: --disable-nls
configure: loading site script /home/pfanni/src/trunk/include/site/mipsel-linux-uclibc
configure: loading cache /home/pfanni/src/trunk/source/target-mipsel_uClibc-0.9.32.1/config.cache
checking build system type... (cached) i386-pc-linux-gnu
checking host system type... (cached) mipsel-unknown-linux-gnu
checking if building in the top-level or dist directories... no
checking if --disable-cryptography option specified... no
checking if --disable-hash option specified... no
checking if --disable-partition option specified... no
checking if --disable-compression option specified... no
checking if --disable-mutexsupport option specified... no
checking if --disable-atomicsupport option specified... no
checking if --disable-queue option specified... no
checking if --disable-replication option specified... no
checking if --disable-statistics option specified... no
checking if --disable-verify option specified... no
checking if --enable-compat185 option specified... no
checking if --enable-cxx option specified... no
checking if --enable-debug option specified... no
checking if --enable-debug_rop option specified... no
checking if --enable-debug_wop option specified... no
checking if --enable-diagnostic option specified... no
checking if --enable-dump185 option specified... no
checking if --enable-java option specified... no
checking if --enable-mingw option specified... no
checking if --enable-o_direct option specified... no
checking if --enable-posixmutexes option specified... no
checking if --enable-rpc option specified... no
checking if --enable-smallbuild option specified... yes
checking if --enable-stl option specified... no
checking if --enable-tcl option specified... no
checking if --enable-test option specified... no
checking if --enable-uimutexes option specified... no
checking if --enable-umrw option specified... no
checking if --with-mutex=MUTEX option specified... MIPS/gcc-assembly
checking if --with-tcl=DIR option specified... no
checking if --with-uniquename=NAME option specified... no
checking for mipsel-linux-chmod... no
checking for chmod... chmod
checking for mipsel-linux-cp... no
checking for cp... cp
checking for mipsel-linux-ln... no
checking for ln... ln
checking for mipsel-linux-mkdir... no
checking for mkdir... mkdir
checking for mipsel-linux-rm... (cached) rm
checking for mipsel-linux-sh... no
checking for sh... /bin/sh
checking for a BSD-compatible install... (cached) /usr/bin/install -c
checking for mipsel-linux-cc... (cached) /home/pfanni/src/trunk/toolchain/build/mipsel_gcc-4.6.3_uClibc-0.9.32.1/mipsel-linux-uclibc/bin/mipsel-linux-uclibc-gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... yes
checking for suffix of object files... (cached) o
checking whether we are using the GNU C compiler... (cached) yes
checking whether /home/pfanni/src/trunk/toolchain/build/mipsel_gcc-4.6.3_uClibc-0.9.32.1/mipsel-linux-uclibc/bin/mipsel-linux-uclibc-gcc accepts -g... (cached) yes
checking for /home/pfanni/src/trunk/toolchain/build/mipsel_gcc-4.6.3_uClibc-0.9.32.1/mipsel-linux-uclibc/bin/mipsel-linux-uclibc-gcc option to accept ISO C89... (cached) none needed
checking for an ANSI C-conforming const... (cached) yes
checking for inline... (cached) inline
checking whether we are using gcc version 2.96... no
checking for a sed that does not truncate output... (cached) /bin/sed
checking for grep that handles long lines and -e... (cached) /bin/grep
checking for egrep... (cached) /bin/grep -E
checking for fgrep... (cached) /bin/grep -F
checking for ld used by /home/pfanni/src/trunk/toolchain/build/mipsel_gcc-4.6.3_uClibc-0.9.32.1/mipsel-linux-uclibc/bin/mipsel-linux-uclibc-gcc... (cached) /home/pfanni/src/trunk/toolchain/build/mipsel_gcc-4.6.3_uClibc-0.9.32.1/mipsel-linux-uclibc/mipsel-linux-uclibc/bin/ld
checking if the linker (/home/pfanni/src/trunk/toolchain/build/mipsel_gcc-4.6.3_uClibc-0.9.32.1/mipsel-linux-uclibc/mipsel-linux-uclibc/bin/ld) is GNU ld... (cached) yes
checking for BSD- or MS-compatible name lister (nm)... (cached) /home/pfanni/src/trunk/toolchain/build/mipsel_gcc-4.6.3_uClibc-0.9.32.1/mipsel-linux-uclibc/bin/mipsel-linux-nm -B
checking the name lister (/home/pfanni/src/trunk/toolchain/build/mipsel_gcc-4.6.3_uClibc-0.9.32.1/mipsel-linux-uclibc/bin/mipsel-linux-nm -B) interface... (cached) BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... (cached) 805306365
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking for /home/pfanni/src/trunk/toolchain/build/mipsel_gcc-4.6.3_uClibc-0.9.32.1/mipsel-linux-uclibc/mipsel-linux-uclibc/bin/ld option to reload object files... (cached) -r
checking for mipsel-linux-objdump... (cached) objdump
checking how to recognize dependent libraries... (cached) pass_all
checking for mipsel-linux-ar... (cached) mipsel-linux-ar
checking for mipsel-linux-strip... (cached) mipsel-linux-strip
checking for mipsel-linux-ranlib... (cached) mipsel-linux-ranlib
checking command to parse /home/pfanni/src/trunk/toolchain/build/mipsel_gcc-4.6.3_uClibc-0.9.32.1/mipsel-linux-uclibc/bin/mipsel-linux-nm -B output from /home/pfanni/src/trunk/toolchain/build/mipsel_gcc-4.6.3_uClibc-0.9.32.1/mipsel-linux-uclibc/bin/mipsel-linux-uclibc-gcc object... (cached) ok
checking how to run the C preprocessor... (cached) /home/pfanni/src/trunk/toolchain/build/mipsel_gcc-4.6.3_uClibc-0.9.32.1/mipsel-linux-uclibc/bin/mipsel-linux-uclibc-gcc -std=gnu99 -E
checking for ANSI C header files... (cached) yes
checking for sys/types.h... (cached) yes
checking for sys/stat.h... (cached) yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking for memory.h... (cached) yes
checking for strings.h... (cached) yes
checking for inttypes.h... (cached) yes
checking for stdint.h... (cached) yes
checking for unistd.h... (cached) yes
checking for dlfcn.h... (cached) yes
checking whether we are using the GNU C++ compiler... yes
checking whether /home/pfanni/src/trunk/toolchain/build/mipsel_gcc-4.6.3_uClibc-0.9.32.1/mipsel-linux-uclibc/bin/mipsel-linux-uclibc-g++-wrapper accepts -g... yes
checking how to run the C++ preprocessor... (cached) /home/pfanni/src/trunk/toolchain/build/mipsel_gcc-4.6.3_uClibc-0.9.32.1/mipsel-linux-uclibc/bin/mipsel-linux-uclibc-g++-wrapper -E
checking for objdir... (cached) .libs
checking if /home/pfanni/src/trunk/toolchain/build/mipsel_gcc-4.6.3_uClibc-0.9.32.1/mipsel-linux-uclibc/bin/mipsel-linux-uclibc-gcc supports -fno-rtti -fno-exceptions... (cached) no
checking for /home/pfanni/src/trunk/toolchain/build/mipsel_gcc-4.6.3_uClibc-0.9.32.1/mipsel-linux-uclibc/bin/mipsel-linux-uclibc-gcc option to produce PIC... -fPIC -DPIC
checking if /home/pfanni/src/trunk/toolchain/build/mipsel_gcc-4.6.3_uClibc-0.9.32.1/mipsel-linux-uclibc/bin/mipsel-linux-uclibc-gcc PIC flag -fPIC -DPIC works... (cached) yes
checking if /home/pfanni/src/trunk/toolchain/build/mipsel_gcc-4.6.3_uClibc-0.9.32.1/mipsel-linux-uclibc/bin/mipsel-linux-uclibc-gcc static flag -static works... (cached) yes
checking if /home/pfanni/src/trunk/toolchain/build/mipsel_gcc-4.6.3_uClibc-0.9.32.1/mipsel-linux-uclibc/bin/mipsel-linux-uclibc-gcc supports -c -o file.o... (cached) yes
checking if /home/pfanni/src/trunk/toolchain/build/mipsel_gcc-4.6.3_uClibc-0.9.32.1/mipsel-linux-uclibc/bin/mipsel-linux-uclibc-gcc supports -c -o file.o... (cached) yes
checking whether the /home/pfanni/src/trunk/toolchain/build/mipsel_gcc-4.6.3_uClibc-0.9.32.1/mipsel-linux-uclibc/bin/mipsel-linux-uclibc-gcc linker (/home/pfanni/src/trunk/toolchain/build/mipsel_gcc-4.6.3_uClibc-0.9.32.1/mipsel-linux-uclibc/mipsel-linux-uclibc/bin/ld) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking for ld used by /home/pfanni/src/trunk/toolchain/build/mipsel_gcc-4.6.3_uClibc-0.9.32.1/mipsel-linux-uclibc/bin/mipsel-linux-uclibc-g++-wrapper... (cached) no
configure: error: no acceptable ld found in $PATH

ERROR: Build failed.
make: *** [source/target-mipsel_uClibc-0.9.32.1/db-4.8.30/.configured] Fehler 1
 

Anhänge

  • pfanni.txt
    25.8 KB · Aufrufe: 1
Zuletzt bearbeitet:
Das hat jetzt aber nichts mit der Toolchain für das Target zu tun. Kommt das nochmal, wenn du mit "make dirclean" sauber gemacht hast?

Gruß
Oliver
 
Stimmt, aber mit ruby;-)

Ja ich habe sogar extra frisch ausgecheckt und Menü konfiguriert.
 
Nochmal als Zusammenfassung für mich...

Du willst ruby für die Box kompilieren? Welchen Branch nimmst du dazu? trunk? Warum nimmst du nicht das vorhandene Paket?

Ich frage, weil es so für mich schwer nachzuvollziehen ist. Deine .config hast du ja oben angehängt. Wenn du jetzt noch einen Patch für das ruby-Makefile anhängen könntest, so dass ich das ausprobieren kann...

Gruß
Oliver
 
Die Zusammenfassung:

Es muss leider Ruby 1.9.3 sein, und das ist in Freetz nicht zu haben. Ausserdem soll es erstmal die original Firmware von AVM sein.

Ruby habe ich jetzt mit der Toolchain bauen können, dafür aber nicht statisch gelingt, sondern dynamisch.

Ruby läuft auf der Fritzbox aber es fehlen Ruby eine Kompilier-Umgebung auf der Fritzbox.

Beim Versuch mit dem aktuellen "Trunk" aus dem svn mittels make menuconfig und der gewählten Option "build binutils and gcc for target" (oder so ähnlich (siehe .config aus meinem LETZTEN Konfig (pfanni.txt) ein "make toolchain" auszuführen scheitert, dass ist mein jetziges Problem. Ich vermute ein Problem im Trunk? Den Trunk habe ich frisch ausgecheckt, Du müsstest das also schnell nachvollziehen können.

Ich nehme an, dass die Option "build binutils and gcc for target" genau dies macht: eine Kompilier-Umgebung für auf der FB bauen, oder?

Ein Patch für das ruby-freetz-Makefile habe ich nicht. Ich habe alles "zu Fuss" gemacht.

Viele Grüsse,

Christoph
 
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.