Statisch linken fürs Initrd.

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
NonIlIteFreak
Beiträge: 73
Registriert: 30.04.2005 22:37:43

Statisch linken fürs Initrd.

Beitrag von NonIlIteFreak » 08.07.2007 01:39:39

Kleines Bastelprojeckt: Netter kleiner Kernel mit selbstgesrickten initrd.image in dem sich ein statisch gelinkter Player (mp3) die kernel module die dafür benötigt werden und natürlich die mp3 befindet.... und schon kommt beim starten des Systems eine netter kleiner sound... sei es nun der Imperiale Marsch aus Starwars oder eine nette Frauenstimme die einen begrüßt.... blos wie statisch linken ?

Code: Alles auswählen

mpg321-0.2.10.3# LDFLAGS=--static ./configure
und ein folgendes make macht mir zwar eine ausführbare Datei bei der ldd sagt

Code: Alles auswählen

/mpg321-0.2.10.3# ldd ./mpg321
        not a dynamic executable
auch wunderbar die hilfe mit --help ausgegeben wird...

ABER den versuch eine mp3 wiederzugeben scheitert mit einem "Speicherzugriffsfehler"

jo...
...
...
HILFE !
...
...
...
mfg Freak `;..;´

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Beitrag von peschmae » 08.07.2007 13:53:22

Hab mal schnell geguckt wie das so aussieht. Beim kompilieren bzw. linken:

Code: Alles auswählen

/usr/lib/gcc/i486-linux-gnu/4.2.1/../../../../lib/libao.a(audio_out.o): In function `ao_initialize':
(.text+0x9c1): warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
network.o: In function `udp_open':
/tmp/mpg321-0.2.10.3/network.c:94: warning: Using 'gethostbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
Da die glibc recht gross ist versuchst du da wohl am bessten irgendwie rumzuarbeiten (entsprechende Codestücke entfernen/ändern oder eine andere libc (dietlibc/uclibc) zu verwenden).

Wobei ich jetzt natürlich auch nicht garantieren kann das diese Warnings die direkte Ursache für deine Crashes sind.

MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Beitrag von cosmac » 10.07.2007 13:42:16

hi,

Man kann die glibc angeblich neu kompilieren mit einem Switch
(----enable-static-nss), der die NameServiceSwitch-Teile auch
statisch einbindet.

Statisch linken ist aus der Mode gekommen :(
Beware of programmers who carry screwdrivers.

NonIlIteFreak
Beiträge: 73
Registriert: 30.04.2005 22:37:43

Beitrag von NonIlIteFreak » 14.07.2007 20:43:36

Jo... habe es nicht hinbekommen und nu läuft es...

mpg321 wollte sich torz dietlib nicht zur mitarbeit überreden lassen mpg123 lässt sich hingegen sauber durchlaufen lassen.

schreibe bei gelegenheit noch mal genau wie es gemacht habe.

dennoch danke für die vorschläge

mfg freak

Antworten