Avatar billede stig3 Mester
30. marts 2001 - 18:54 Der er 6 kommentarer og
1 løsning

redhat 7.0 og C-programmering

Der er en fejl et sted når man bruge compileren gcc. Jeg compiler at program jeg VED virker. Jeg har kørt det på skolen og læreren har lavet det så der er ingen tvivl.

Den siger at der er nogle forkerte referencer Bla.:
/usr/lib/gcc-lib/........../libreadline.so: undefines reference to \'tgetstr\'

Hvad skal jeg gøre for at få det til at virke ?

Jeg har forsøgt at kigge lidt på redhat\'s hjemmeside, men kan ikke finde ud af hvad jeg skal downloade og installere.
Avatar billede lbhansen Nybegynder
31. marts 2001 - 20:45 #1
Det vil hjælpe at du skriver hvilken distribution den er compilet på, samt at vise koden
Avatar billede stig3 Mester
31. marts 2001 - 23:05 #2
Distributionen står i overskriften redhat 7.0

koden virker, der ikke kan compile og giver fejlmeddelelsen er:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

#include <readline/readline.h>
#include <readline/history.h>

#define FALSE 0
#define TRUE (!FALSE)

typedef struct {
  char *name;
  int  argc;
  char **argv;
} command_t;


command_t *get_command( char *prompt )
{
  command_t *command;
  char *p, *str;
  int i = 0;

  command = malloc( sizeof( command_t ) );

  // Get the line
  do {
    str = readline( prompt );
  } while ( (str == NULL) || (*str == \'\\0\') );

  add_history( str );
  // Parse str into a command struct

  // Count the number of arguments
  command->argc = 0;

  p = str;
  while ( *p ) {
    while( *p && isspace( *p ))    // Skip white-spaces
      p++;

    if ( *p ) {
      command->argc++;
      while ( *p && !isspace( *p ))
        p++;
    }
  }

  // Allocate argv array
  command->argv = malloc( (command->argc + 1) * sizeof( char * ) );

  // Skip initial white-spaces

  p = str;

  while ( *p ) {
    while ( *p && isspace( *p ))
      p++;

    if ( *p ) {
      command->argv[i++] = p;

      while ( *p && !isspace( *p ))
        p++;

      if ( *p ) {
        *p = \'\\0\';
        p++;
      }
    }
  }

  command->argv[i] = NULL;
  command->name = command->argv[0];

  return command;
}

/*
* split_path -- if path == \"A:B:C\", an array \'dirs\' of length four
*  is returned such that dirs[0] == \"A\", dirs[1] == \"B\", dirs[2] == \"C\"
*  and dirs[3] = NULL;
*/


char **split_path( char *path )
{
  char *p = path, **dirs;
  int n = 1;

  // Count no. of dirs in path:
  for ( p = path; *p; p++ )
    if ( *p == \':\' )
      n++;

  dirs = malloc( (n+1) * sizeof( char * ));

  p = strdup(path);
  n = 0;

  while ( *p ) {
    dirs[n++] = p;

    while ( *p && *p != \':\' )
      p++; 

    if ( *p ) {
      *p = \'\\0\';
      p++;
    }
  }

  dirs[n] = NULL;
  return dirs;
}

void execute( command_t *command )
{
}

int main()
{
  while ( 1 ) {
    execute( get_command( \"> \" ) );
  }

}
Avatar billede peter_m Nybegynder
02. april 2001 - 14:18 #3
Er der ikke noget med at der er problemmer med glibc i redhat 7.0 så man skal bruge kgcc eller sådan noget.?? da glibc i redhat7.0 er (edge technology)?
Avatar billede stig3 Mester
02. april 2001 - 14:28 #4
Så man skal compile med kgcc ?
Avatar billede peter_m Nybegynder
02. april 2001 - 14:33 #5
Se lige en mening fra Linus ang. dette.

http://www.linuxgram.com/newsitem.phtml
sid=108&aid=11472
Avatar billede stig3 Mester
02. april 2001 - 14:41 #6
Tjaa, så er der vel fejl.

Kan man så ikke bare fjerne pakken og installere en ældre eller ligger det dybere end det ?

Og hvis det kan lade sig gøre, hvordan er det så nu lige man gør ?
Avatar billede stig3 Mester
25. april 2001 - 12:42 #7
Der kom ikke rigtig nogen løsning på problemet, så jeg lukker.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester