Hi Leute!
Ich habe folgendes Problem: ich muss die Datei "seculock_cgi.cc" uebersetzen. Der Compiler (g++) frisst das Ding ohne zu mucken, aber der Linker kann die die Referenzen nicht aufloesen, obwohl die benoetigten Funktionen in "libcardio.a" und "libcgi.a" enthalten sind. Mit welchen Parametern muss ich g++ und/oder ld aergern oder in welches Verzeichnis muessen diese Dateien, damit ich dieses Programm gelinkt bekomme? Z.z. stehen sie im gleichen Verzeichnis, wie die "seculock_cgi.cc"
On Tuesday, 12. June 2001 00:34, Mark-Andres Hohm wrote:
Ich habe folgendes Problem: ich muss die Datei "seculock_cgi.cc" uebersetzen.
Du oder der Compiler? Das Wörterbuch dazu will ich aber sehen :)
Mit welchen Parametern muss ich g++ und/oder ld aergern oder in welches Verzeichnis muessen diese Dateien, damit ich dieses Programm gelinkt bekomme? Z.z. stehen sie im gleichen Verzeichnis, wie die "seculock_cgi.cc"
Na gar keine Parameter. Wenn schon statisch linken, dann gibt man die einfach an - sind ja schließlich ganz normale Archive, die mit "ar cru" oder so aus den Objektdateien erzeugt worden. Beispiel: gcc foobar foo.o libbar.a
Oder du gehst den "edlen" Weg über libtool (ist es ein ge-autoconf'tes Paket?), dann heißt es: libtool --mode=link gcc foobar foo.o libbar.a (und er kümmert sich darum, eventuelle Parameter zu setzen)
Josef Spillner
Hi Leute!
Erst einmal danke fuer eure Hilfe. Das Programm habe ich jetzt gelinkt bekommen, aber jetzt bekomme ich folgende Fehlermeldung: "Premature end of script headers: /opt/seculock/httpd/cgi-bin/seculock_cgi" Was kann ich falsch gemacht haben? Wo kann das Problem liegen, oder mit welchen Parametern an welcher Stelle bekomme ich mehr Informationen.
On Tue, Jun 12, 2001 at 07:20:46PM +0200, Mark-Andres Hohm wrote:
Hi Leute!
Erst einmal danke fuer eure Hilfe. Das Programm habe ich jetzt gelinkt bekommen, aber jetzt bekomme ich folgende Fehlermeldung: "Premature end of script headers: /opt/seculock/httpd/cgi-bin/seculock_cgi"
Wie die Fehlermeldung schon besagt, erwartet Apache noch Daten von deinem CGI-Script, die es aber nicht liefert (z.B. hat es den HTTP-Header nur teilweise ausgegeben)
Gründe: 99.9% Script ist buggy 0.1% unerklärliche Phänomene ;)
Ciao, Tobias
Am Tue den 12 Jun 2001 um 07:20:46PM +0200 schrieb Mark-Andres Hohm:
Hi Leute!
Erst einmal danke fuer eure Hilfe. Das Programm habe ich jetzt gelinkt bekommen, aber jetzt bekomme ich folgende Fehlermeldung: "Premature end of script headers: /opt/seculock/httpd/cgi-bin/seculock_cgi"
Das ist das was der User als schnöden Error 500 vorgesetzt bekommt. Führe das Skript mal interaktiv aus und schau an, ob es auch wirklich was tut außer ein exit 1 zu liefern. Oft liegt der Fehler darin, daß die Umgebung in der das Skript ausgeführt wird, nicht die gleiche wie die Entwicklungsumgebung ist. Oft scheitert es an einem nicht gesetzten LD_LIBRARY_PATH, wodurch einige libraries nicht gefunden werden.
Was kann ich falsch gemacht haben? Wo kann das Problem liegen, oder mit welchen Parametern an welcher Stelle bekomme ich mehr Informationen.
AFAIK setzt der Indianer bei http/get die Variablen in einer Umgebungs- variablen QUERY_STRING ab, die kannst du setzen und das Programm somit mit "simulierten" Eingabedaten füttern.
export QUERY_STRING=foo=bar&jacke=hose ./mein_programm
Bei http posts kannst du die Parameter als stdin übergeben. echo "foo=bar&jacke=hose" | ./mein_programm
andre
On Tuesday 12 June 2001 00:34, Mark-Andres Hohm wrote:
Hi Leute!
Ich habe folgendes Problem: ich muss die Datei "seculock_cgi.cc" uebersetzen. Der Compiler (g++) frisst das Ding ohne zu mucken, aber der Linker kann die die Referenzen nicht aufloesen, obwohl die benoetigten Funktionen in "libcardio.a" und "libcgi.a" enthalten sind. Mit welchen Parametern muss ich g++ und/oder ld aergern oder in welches Verzeichnis muessen diese Dateien, damit ich dieses Programm gelinkt bekomme? Z.z. stehen sie im gleichen Verzeichnis, wie die "seculock_cgi.cc"
Wenn sie im selben Verzeichnis liegen: g++ seculock_cgi.o libcardio.a libcgi.a -o irgendwas
Wenn sie in einem lib-Verzeichnis liegen (/lib, /usr/lib, etc.pp): g++ seculock_cgi.o -lcardio -lcgi -o irgendwas
Eventuell mußt Du die Reihenfolge noch ändern (Regel: was die Symbole braucht kommt vor dem, was sie bietet).
Konrad
lug-dd@mailman.schlittermann.de