Avatar billede mosquito Nybegynder
09. juli 2003 - 15:51 Der er 12 kommentarer og
1 løsning

In function '_start' undefined reference to 'main'

/usr/lib/gcc-lib/i586-mandrake-linux/3.2.2/../../../crt1.o: In function `_start':
: undefined reference to `main'
collect2: ld returned 1 exit status
make: ***[test] Fejl 1

Compilation exited abnormally with code 2 at Wed Jul  9 15:28:21

ovenstående er en meddelelse jeg får ved at bruge den indbyggede compiler i emacs som er sat op med make -k
make -k test
g++ test.cpp -o test

Headerfil
**************************
#ifndef TEST_H
#define TEST_H

namespace Test
{
  void pop(char);
  char push();
}

#endif // TEST_H

Cpp fil
**************************
#include "test.h"

namespace Test
{
  char v;
 
  void pop(char x)
  {
    v = x;
  }

  char push()
  {
    return v;
  }
}


jeg formoder der er tale om en opsætning af min makefile, men har brug for hjælp.. er stadig novice i linux..
Avatar billede driis Nybegynder
09. juli 2003 - 15:56 #1
Det, fejlen betyder, er, at du SKAL have en main() funktion, for at programmet ved hvor det skal starte. Hvis du bare skal prøve, om det du har skrevet indtil videre kan compile, kan du jo blot indsætte en tom main :

int main() { return 0 ; }
Avatar billede segmose Nybegynder
09. juli 2003 - 16:15 #2
eller

int main() {
  test::push('a');
  printf("pop:%c\n", test::pop());

  return 0 ;
}

Jeg formoder du har byttet om på push (læg på stack) og pop (tag af stack).
Avatar billede arne_v Ekspert
09. juli 2003 - 16:19 #3
Eller få Emacs omkonfigueret til at lave:

g++ -c test.cpp -o test.o
Avatar billede mosquito Nybegynder
09. juli 2003 - 16:34 #4
driis >> jeg har prøvet at sætte en mainfunction i selve test.cpp.. derved får jeg ingen compilerfejl, men jeg ønsker at have min mainfunction i en separat Main.cpp fil.. samme fejl vises herefter

segmose >> ja.. nogle gange går det lidt for stærkt.
Avatar billede arne_v Ekspert
09. juli 2003 - 16:39 #5
Hvis du vil have main i separat .cpp (hvilket iøvrigt er en anbefalelsesværdig
ting), så skal du nok have den -c sat på compiler kommandoen !
Avatar billede mosquito Nybegynder
09. juli 2003 - 16:44 #6
arne_v >> hvordan sættes emacs op til at compilere uden at linke med -c ?
Avatar billede arne_v Ekspert
09. juli 2003 - 16:56 #7
Godt spørgsmål jeg bruger ikke selv Emacs.

make -k test.o

måske ??
Avatar billede mosquito Nybegynder
09. juli 2003 - 17:03 #8
arne_v >> ok.. setup må jeg finde ud af senere.. først er det at få skidtet til at køre.. dit første forslag til compilering hjalp, men jeg plejer at afvikle den eksekverbare fil med ./filnavn    det virker ikke længere.... skal Main.o linkes til noget.. og i såfald hvordan?
Avatar billede arne_v Ekspert
09. juli 2003 - 17:15 #9
Det er:

g++ -c test.cpp -o test.o
g++ -c main.cpp -o main.o
g++ main.o test.o -o test
./test
Avatar billede segmose Nybegynder
09. juli 2003 - 18:09 #10
Hvis du har en make fil så post den lige så vi kan se hvad der skal til.
Avatar billede mosquito Nybegynder
09. juli 2003 - 18:09 #11
det løste problemet.. takker.. throw et svar og pointene er dine :-)
Avatar billede mosquito Nybegynder
09. juli 2003 - 18:30 #12
segmose >> jeg har oprettet et nyt spørgsmål under linux, hvor det hører til.
se:

www.eksperten.dk/spm/374522
Avatar billede arne_v Ekspert
09. juli 2003 - 18:36 #13
svar
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
Kurser inden for grundlæggende programmering

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