Pomoc z makefile

D1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 40
0

Witajcie,
napisalem make pod program, i program mi sie kompiluje, ale sie nie uruchamia. gdzie jest problem?
Chciałbym, zeby sie uruchamial i pobieral dane z pliku tekst1.txt

Kopiuj

all : test1 test2
clean :
    @rm -f *~ zad1  *.ps

help :
    @echo ""
    @echo "Dostepne opcje: all, clean,"
    @echo "  zad1,  sito,"
    @echo "  test1, "
    @echo ""

zad1 : zad-1.c
    @gcc $(CFLAGS) -o zad1  zad1.c

test1 : zad1
    @echo ""
    @echo "Zadanie 1."
    @cat tekst1.txt
    @echo ""
    @./zad1

atmal
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 913
1

Jeżeli kompiluje się bez problemu to raczej nie ma problemu z makefile. Widzisz jakieś błędy?

D1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 40
0

chodzi o to, że chciałbym wywolac otwarcie sie programu z poziomu make'a. gdy wpisuje w terminalu: make test1 wyskakuje brak reguł do wykonania dla obiektu test1

  • Rejestracja: dni
  • Ostatnio: dni
1
Kopiuj
.PHONY: all test1 help 

potem

Kopiuj
zad1 : zad-1.c
    @gcc $(CFLAGS) -o $@  $<
Driller12 napisał(a):

Chciałbym, zeby sie uruchamial i pobieral dane z pliku tekst1.txt

Kopiuj
./zad1 < tekst1.txt
atmal
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 913
0

Jedyny problem jaki u mnie się pokazuje to:

Kopiuj
make: *** Brak reguł do zrobienia obiektu 'zad-1.c', wymaganego przez 'zad1'. Stop.

No bo rzeczywiście takie coś u Ciebie nie istnieje. Po usunięciu zad-1.c problemu nie ma i program kompiluje się bez problemu.

D1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 40
0

Teraz moj make wyglada tak:

Kopiuj
.PHONY: all test1 help

CFLAGS = -Wall

all : test1 test2
clean :
    @rm -f *~ zad1 zad2 *.ps

help :
    @echo ""
    @echo "Dostepne opcje: all, clean,"
    @echo "  zad1, zad2,  sito,"
    @echo "  test1, test2,"
    @echo ""

zad1 : zad1.c
    @gcc $(CFLAGS) -o $@ $<


test1 : zad1
    @echo ""
    @echo "zad1"
    @cat tekst1.txt
    @echo ""
    @./zad1 < tekst1.txt

po komendzie make test1 nadal to samo, sam program mi sie kompiluje normalnie. tylko chce by sie uruchamial

D1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 40
0

a sam program wyglada tak

Kopiuj
#include <stdio.h>
#include <string.h>

void proc_in_stats();

int main()
{
  printf("Podaj tekst w którym chcesz zliczyć znaki:\n ");
  proc_in_stats();

  return 0;
}

void proc_in_stats()
{
  int char_count[ 128 ] = { 0 };
  char buff[ 64 ];
  int rv = 0;
  int i;
  size_t j, len;
  for( i = 0 ; i < 5 ; i += 1 ) {
    rv = scanf( "%s", buff );
    if( rv <= 0 ) {
      return;
    }
    else {
      len = strlen( buff );
      for( j = 0 ; j < len ; j += 1 ) {
        char_count[ (int)buff[ j ] ] += 1;
      }
    }
  }
  for( i = 0 ; i < 128 ; i += 1 ) {
    if( char_count[ i ] > 0 ) {
      printf( "\nZnak '%c' w Twoim tekscie wpisales %d razy.", (char)i, char_count[ i ]);
    }
  }
}


D1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 40
0

uzywajac make'a chce uzyskac:
kompilacje programu(to juz mam)
uruchomienie programu za pomoca make'a
oraz to by pobieram dane z pliku txt

atmal
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 913
1

Może zacznij pomału.
W main zostaw tylko printf - wtedy będziesz wiedział że program na 100% jest w porządku.
Makefile zrób taki:

Kopiuj
all: test1

zad1:
	@gcc -o main.o main.c

test1: zad1
	@./main.o

To powinno skompilować i odpalić ten program.

Wtedy możesz zacząć dodawać do tego makefile i patrzyć czy nadal działa czy też nie.

D1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 40
0

napisalem zwykly hello world i napisalem make taki jak mi podales i nie dziala mi kompilacja ani uruchamianie programu.. ;/

atmal
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 913
0

Błędów zakładam że nie widzisz żadnych, w takim razie może zejdźmy jeszcze niżej - skompiluj ręcznie i spróbuj uruchomić (jeżeli oczywiście plik będzie istniał):

Kopiuj
gcc -Wall -pedantic main.c -o main.o

./main.o
D1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 40
0

tak, gdy zwyczajnie skompiluje i odpale to dziala jak powinien

atmal
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 913
0

Spróbuj coś takiego:

Kopiuj
all:
	gcc -o main.o src/main.c
	./main.o

Choć zakładam że rezultat będzie taki sam co oznacza że problem musi być gdzieś indziej.

DR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1135
0

@Driller12: może i głupie, ale odpal z prawami administratora

D1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 40
0

i jakiej komendy uzyc by to odpalic w make?

atmal
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 913
0

Zwyczajnie robisz:

Kopiuj
sudo make all

i podajesz hasło roota.

D1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 40
0

sorry ale sie zagubilem... :o jakie haslo roota?

atmal
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 913
0

Jesteś na Linuxie czy Windzie?

D1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 40
0

Linux

atmal
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 913
0

I nie używałeś nigdy np.

Kopiuj
sudo apt-get install...

?

Wtedy podajesz hasło i masz uprawnienia roota (administratora).

D1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 40
0

uzywalem :D juz wiem o co chodzi.. sprry ale jestem po 12 godzinach pracy :| ale nadal to samo ;\

D1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 40
0
Dregorio napisał(a):

@Driller12: może i głupie, ale odpal z prawami administratora

uzywam linuksa i w ustawieniach mam jako administrator..

D1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 40
0

Probowalem teraz odpalic tego starego make'a przez

Kopiuj
sudo make test1

ale tez nie dziala..
kompilacja nadal dziala

MO
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tam gdzie jest (centy)metro...
0

W pliku Makefile wcięcia powinny być wykonane koniecznie tabulatorem a nie zestawem spacji.

D1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 40
0
Mokrowski napisał(a):

W pliku Makefile wcięcia powinny być wykonane koniecznie tabulatorem a nie zestawem spacji.

Niestety nic to nie zmienilo w tym roboczym make'u. w glownym mam wciecia zrobione tabulatorem...

D1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 40
0

ktos ma jeszcze jakis pomysl?

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
0

all wymaga test2 które jest niezdefiniowane

D1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 40
0
Azarien napisał(a):

all wymaga test2 które jest niezdefiniowane
Niestety to nie pomaga..

  • Rejestracja: dni
  • Ostatnio: dni
0

Ok, to od początku.
Wykonaj

Kopiuj
make --version

i podeślij output.
Wykonaj też

Kopiuj
gcc --version

i też podeślij output.
A na koniec usuń znaki at (@) na początku komend.
Wykonaj

Kopiuj
make

A potem jeszcze na wszelki wypadek:

Kopiuj
make --trace

i oczywiście output.
Pomożemy.

M0
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: LOP
  • Postów: 1
0

Spróbuj to wrzucić do programu Geany może masz coś nie tak z kompilatorem GCC.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.