28. August 200817 j Obwohl ich kein C-Programmierer bin, habe ich mir mit Google's Hilfe ein kleines Programm gebacken, das vom Webserver als CGI ausgeführt werden soll. Unter Linux funktioniert das prima, unter OpenBSD produziert es jedoch einen "Segmentation Fault". Hat jemand eine Idee, woran das liegen könnte ? #include <stdio.h> int main(void) { printf("Status: 301\n"); printf("Location: https://meineseite.com/users/%s/\n",getenv("REMOTE_USER")); return 0; } Kompiliert wurde es jeweils mit (statisch für ein Chroot): gcc --static -o index.cgi index.c
28. August 200817 j Compiling such a program with a compiler that does not check for the assignment of read-only locations at compile time, and running it on a Unix-like operating system produces the following runtime error: [...] btw: Unter jedem Betriebssystem neu kompiliert?
28. August 200817 j Autor Natürlich neu kompiliert. Ein Kollege hier konnte zu meiner Überraschung doch C und hat mich auf "man getenv" unter OpenBSD hingewiesen. Dort steht, das man noch stdlib.h includen muß, was man unter Linux nicht braucht. Damit gehts jetzt auch
28. August 200817 j Natürlich neu kompiliert. Ein Kollege hier konnte zu meiner Überraschung doch C und hat mich auf "man getenv" unter OpenBSD hingewiesen. Dort steht, das man noch stdlib.h includen muß, was man unter Linux nicht braucht. Müsste doch eigentlich einen Fehler ausgeben, wenn man unter BSD kompiliert und da ne Header fehlt. :confused:
28. August 200817 j Müsste doch eigentlich einen Fehler ausgeben, wenn man unter BSD kompiliert und da ne Header fehlt. :confused: C ist recht nachsichtig, was fehlende Funktionsdeklarationen angeht, zumindest in der "alten" Standardversion von 1989.
28. August 200817 j Hallo, wenn man das überprüft haben möchte, sollte man -Wall -pedantic als Optionen angeben. Dann ist der GCC noch entwas gesprächiger. Würde ich sowieso empfehlen, das standardmäßig zu nutzen.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.