C Code laeuft nur unter SuSE nicht unter Debian

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
mithras
Beiträge: 8
Registriert: 27.06.2003 23:58:41

C Code laeuft nur unter SuSE nicht unter Debian

Beitrag von mithras » 28.06.2003 00:00:56

Unten seht ihr eine Funktion namens mapping, was mapping macht weiß ich denk ich derjenige der mir vielleicht helfen koennte.

Das komische ich kann untensehenden Code auf einem SuSE Linux 8.0 (Kernel 2.4) Rechner ausführen (da funktioniert alles perfekt), auf einem Debian woody (Kernel 2.2) Rechner aber nicht!

Da kommt folgende Fehlermeldung:

"Invalid Argument"
bzw.
"Segmentation fault"

Glaube nicht dass es am Unterschied Kernel 2.2 / 2.4 liegt.

Habe den Code jeweils auf beiden Systemen fehlerfrei kompeliert.

Code: Alles auswählen


int *mapping1()
{
  
  int fd_sm;
  int *zeiger;
  
  if ( (fd_sm=open("/dev/zero", O_RDWR)) < 0)
    printf("kann /dev/zero nicht öffeln!\n");
  
  if ( (zeiger = mmap(0, sizeof(zeiger), PROT_READ | PROT_WRITE, MAP_SHARED, fd_sm, 0)) ==(caddr_t)-1){
    printf("mmap fehler!\n");
    perror("Rueckmeldung1: \n");
  }
  close(fd_sm);
  
  return zeiger;
}


Benutzeravatar
L@w
Beiträge: 916
Registriert: 24.07.2002 08:12:30

Beitrag von L@w » 02.07.2003 07:09:15

kenn mich da auch nicht so richtig aus. aber hast du die selben gcc versionen? probiers mal im debian kompilieren.
cu L@w
---

LINUX - because booting is for adding hardware!

Benutzeravatar
Strempel
Beiträge: 24
Registriert: 10.07.2002 11:51:05
Kontaktdaten:

Beitrag von Strempel » 02.07.2003 10:49:10

Es liegt nicht an debian, es liegt an der gepachten suse-glibc!
Es wäre nicht das erste mal das die querschlägt!!
Compeliere das ganze auf dem debian-system neu.

Benutzeravatar
L@w
Beiträge: 916
Registriert: 24.07.2002 08:12:30

Beitrag von L@w » 02.07.2003 10:54:34

wenn das funktioniert war ich ja gar nicht mal so weit weg oder? :wink:
cu L@w
---

LINUX - because booting is for adding hardware!

Benutzeravatar
weedy
Beiträge: 585
Registriert: 02.11.2002 21:47:49
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: C Code laeuft nur unter SuSE nicht unter Debian

Beitrag von weedy » 17.07.2003 16:43:15

Code: Alles auswählen


int *mapping1()
{
  
  int fd_sm;
  int *zeiger;
  
  if ( (fd_sm=open("/dev/zero", O_RDWR)) < 0)
    printf("kann /dev/zero nicht öffeln!\n");
--- snip

// nehmen wir an, /dev/zero kann nicht geöffnet werden (
// obwohl das recht unwahrscheinlich ist), dann
// wird zwar die fehlerausgabe per printf angewiesen, aber
// gleich danach wird mmap aufgerufen, welches möglicherweise
// den Segmentationfault hervorruft. Die Fehlermeldung
// steht dann möglicherweise noch im puffer und nicht auf
// der console.

--- weiter im text

Code: Alles auswählen

  if ( (zeiger = mmap(0, sizeof(zeiger), PROT_READ | PROT_WRITE, MAP_SHARED, fd_sm, 0)) ==(caddr_t)-1){
    printf("mmap fehler!\n");
    perror("Rueckmeldung1: \n");
  }
  close(fd_sm);
  
  return zeiger;
}


Nachtrag: bei mir funzt der Code.

weedy

Antworten