Re: Tools statisch linken

2004-10-30 Diskussionsfäden Frank Evers
Am Freitag, 29. Oktober 2004 14:28 schrieb Markus Raab:
 Frank Evers wrote:
  Hi
 
  ich würde gerne einige Tools, besonders die im Paket procps statisch
  gelinkt bauen. Da die Sourcen offenbar kein configure Script
  enthalten in dem man solches angeben könnte frage ich mich, ob es
  einen einfachen Weg gibt dies zu erreichen, ohne mühsam die Makefiles
  editiere zu müssen.

 Was genau ist sooo schlimm daran ein Linkerflag zu setzen?

Ja, tatsächlich reichte es eine einzige Zeile im root-Makefile zu ändern, 
und die libproc dazu zu bewegen als .a und nicht als .so, ebenfalls 
händisch im entsprechenden Makefile. Ich bekomme jetzt dennoch:

warning: Using 'getpwnam' in statically linked applications requires at 
runtime the shared libraries from the glibc version used for linking

bzw. andere Funktionen die die glibc für statisch gelinkten Programmen 
erfordern.
Ich bin jetzt überrascht, bedeutet statisch nicht eigentlich, daß 
Programme autonom laufen und gerade _nicht_ auf dynamische libs 
angewiesen sind? Warum muß hier jetzt die glibc vorhanden sein?

Tatsächlich laufen die Programme scheinbar auch ohne, gebaut habe ich auf 
sid, und unter woody laufen zumindest ps und top einwandfrei. Was soll 
ich jetzt von der Compilerwarnung halten?

-- 
Gruß Frank



Re: Tools statisch linken

2004-10-30 Diskussionsfäden Michael Bienia
On 2004-10-30 15:27:09 +0200, Frank Evers wrote:
 Ja, tatsächlich reichte es eine einzige Zeile im root-Makefile zu ändern, 
 und die libproc dazu zu bewegen als .a und nicht als .so, ebenfalls 
 händisch im entsprechenden Makefile. Ich bekomme jetzt dennoch:
 
 warning: Using 'getpwnam' in statically linked applications requires at 
 runtime the shared libraries from the glibc version used for linking
 
 bzw. andere Funktionen die die glibc für statisch gelinkten Programmen 
 erfordern.
 Ich bin jetzt überrascht, bedeutet statisch nicht eigentlich, daß 
 Programme autonom laufen und gerade _nicht_ auf dynamische libs 
 angewiesen sind? Warum muß hier jetzt die glibc vorhanden sein?
 
 Tatsächlich laufen die Programme scheinbar auch ohne, gebaut habe ich auf 
 sid, und unter woody laufen zumindest ps und top einwandfrei. Was soll 
 ich jetzt von der Compilerwarnung halten?

Was ich letztens auf einer anderen Mailing-Liste gelesen haben
(vermutlich debian-devel) eignet sich die glibc nicht wirklich für
statisches Linken. Die glibc wird zwar statisch in dein Programm
gelinkt, jedoch werden die Bibliotheken für die Namensauflösung
(/lib/libnss_*) bei Bedarf dynamisch geladen (dlopen()) und landen nicht
statisch im Programm. Deshalb die Warnung, du brauchst ein paar
/lib/libnss_* trotz statischen Linken.
Das Problem was beim statischen Linken der glibc dann entsteht, ist wenn
sich die libnss_* ändern (z.B. neue Versionen) und nicht mehr zu der
glibc passen, mit der du damals das Programm statisch gelinkt hast.

Michael


-- 
Haeufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)



Re: Tools statisch linken

2004-10-30 Diskussionsfäden Sven Hartge
Frank Evers [EMAIL PROTECTED] wrote:

 Ja, tatsächlich reichte es eine einzige Zeile im root-Makefile zu ändern, 
 und die libproc dazu zu bewegen als .a und nicht als .so, ebenfalls 
 händisch im entsprechenden Makefile. Ich bekomme jetzt dennoch:

 warning: Using 'getpwnam' in statically linked applications requires at 
 runtime the shared libraries from the glibc version used for linking

 bzw. andere Funktionen die die glibc für statisch gelinkten Programmen
 erfordern.  Ich bin jetzt überrascht, bedeutet statisch nicht
 eigentlich, daß Programme autonom laufen und gerade _nicht_ auf
 dynamische libs angewiesen sind? Warum muß hier jetzt die glibc
 vorhanden sein?

Weil z.B. die libnss immer dynamisch sein muss, sonst kann dein
statisches Programm auf z.B. einem System mit Usern aus LDAP diese nicht
auflösen.

Natürlich könntest du die Bibliotheken für LDAP, MySQL, PostgreSQL,
Flatfile-DB und BDB mit einbinden, aber was, wenn ich eine komplett
eigene Bibliothek für mein System habe, welche die User von einem
Lochkartenleser via serieller Schnittstelle zieht?

S°

-- 
75 Things you don't want to hear from your Sys Admin.
54. I've got a bad feeling about this...


-- 
Haeufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)



Tools statisch linken

2004-10-29 Diskussionsfäden Frank Evers
Hi

ich würde gerne einige Tools, besonders die im Paket procps statisch 
gelinkt bauen. Da die Sourcen offenbar kein configure Script enthalten in 
dem man solches angeben könnte frage ich mich, ob es einen einfachen Weg 
gibt dies zu erreichen, ohne mühsam die Makefiles editiere zu müssen.

Eine Idee?

-- 
Gruß Frank



Re: Tools statisch linken

2004-10-29 Diskussionsfäden Markus Raab
Frank Evers wrote:

 Hi
 
 ich würde gerne einige Tools, besonders die im Paket procps statisch
 gelinkt bauen. Da die Sourcen offenbar kein configure Script enthalten
 in dem man solches angeben könnte frage ich mich, ob es einen
 einfachen Weg gibt dies zu erreichen, ohne mühsam die Makefiles
 editiere zu müssen.

Was genau ist sooo schlimm daran ein Linkerflag zu setzen?

man gcc
(-static)

Wenn du dir das ersparen willst: Viele andere Distributionen liefern
sowas immer statisch mit, also würde es mich wundern wenn nicht
irgendwo statisch kompilierte procps herumschwirren.

mfg Markus

-- 
http://markus-raab.org | Mehr als die Vergangenheit interessiert
  -o)  | mich die Zukunft, denn in ihr gedenke ich
Kernel 2.6.8.1 /\  | zu leben.  -- Albert Einstein  
on a i686 _\_v | 


-- 
Haeufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)