Skocz do zawartości

Makefile


Ewelina

Rekomendowane odpowiedzi

Nie wiem jakiej komendy użyć w makefile aby uruchomić program z parametrem np.:

 

$make 3

 

Nigdzie tego nie moge znaleźć na sieci. A mam już w makefile kompilowanie tego programu.

 

CC=gcc
CFLAGS=-Wall -pedantic
main:
    $(CC) $(CFLAGS) fcw.c -o fcw

Jesli chcesz ustawic ilosc rownoleglych prac w ilosci 3 to robisz:

make -j3

Jesli o to ci chodzilo

Odnośnik do komentarza
Udostępnij na innych stronach

Nie do końca ponieważ mam taki program:

 

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
  int n;
  if (argc <= 1){
    printf("Podaj argument!\n"); 
    return -1;
  }
  n= atoi(argv[1]);
  if (n >=1) {
    int i;
    for (i=0;i<n;i++){
      int pid1=fork();
      if (pid1==0){
        execlp("echo","echo","-n","a\n",NULL);
       
      else{//parent
        int pid2=fork();
        if (pid2==0){
          waitpid(pid1, NULL, 0);
          usleep(5);

          printf("b\n");
         return 0;

        }

        else{
          int pid3=fork();
          if (pid3==0){
            waitpid(pid1,NULL, 0);
            waitpid(pid2, NULL, 0);
            usleep(10);
            printf("c\n");
            return 0;
          }
else{
         waitpid(pid1, NULL, 0);
         waitpid(pid2, NULL, 0);
         waitpid(pid3, NULL, 0);
        }
      }
    }
}
}
  return 0;
}

 

I chałałabym go uruchomic za pomoca komendy $make 3 czyli drukowałby to samo trzy razy a jak bym wpisała $make 2 to by drukował dwa razy to samo. I nie wiem jakiej komendy użyć w Makefile żeby pobierał dowolny parametr do tego programu.

 

Odnośnik do komentarza
Udostępnij na innych stronach

Make to nazedzie pomagajace w kompilowaniu i rozbudowie programow, nie jest to ani wirtualna maszyna ani interpreter.

C++ nie jest jezykiem ani skryptowym ani nie uzywa wirtualnej maszyny, widze ze przed dalsza praca zrowno z make jak i C++ przeczytaj sobie jakas dobra ksiazke o programowaniu w C++ (np. "symfonia") a jeszcze wczesniej zajzyj na wikipedie... (moze to cos rozjasni)

 

Jesli chcesz uruchomic skompilowany plik binarny uzyj pliku binarnego i do niego przekaz parametry (argumenty).

Nie bede pytac o kolor twoich wlosow ze wzgledow oczywistych... wlacz myslenie to nie boli :ph34r:

Odnośnik do komentarza
Udostępnij na innych stronach

Gość amdfanatyk

Make to nazedzie pomagajace w kompilowaniu i rozbudowie programow, nie jest to ani wirtualna maszyna ani interpreter.

C++ nie jest jezykiem ani skryptowym ani nie uzywa wirtualnej maszyny, widze ze przed dalsza praca zrowno z make jak i C++ przeczytaj sobie jakas dobra ksiazke o programowaniu w C++ (np. "symfonia") a jeszcze wczesniej zajzyj na wikipedie... (moze to cos rozjasni)

 

Jesli chcesz uruchomic skompilowany plik binarny uzyj pliku binarnego i do niego przekaz parametry (argumenty).

Nie bede pytac o kolor twoich wlosow ze wzgledow oczywistych... wlacz myslenie to nie boli :ph34r:

 

lol

Odnośnik do komentarza
Udostępnij na innych stronach

Nie słuchaj ich, nie lubią pomagać pięknym niewiastom

 

jak już skompilujesz program poleceniem

 

make

 

to potem dajesz:

 

./fcw 3

 

i tak uruchomisz program z parametrem.

Odnośnik do komentarza
Udostępnij na innych stronach

Ten program służy (jak mniemam) do pobawienia się forkami. Jeśli tak, nie czytajcie dalszej części posta.

Konstrukcja programu jest "hackerska" i jest bardzo nieczytelny (zawiera np. niepotrzebnie powieloną linię waitpid(pid1,...), która powinna znaleźć się w programie wyżej i tylko raz. Założenia idei użycia forków też nie są spełnione. Czemu nie uruchomić procesów potomnych pid2 i pid3 jednocześnie, a potem poczekać aż wszystkie się skończą i dopiero wypisać coś na ekran? W dodatku wg mnie trzy ostatnie linie są użyte zupełnie bez potrzeby. Ten wielowątkowy program tylko przy pid1 w uzasadniony sposób jest wielowątkowy (choć czekanie na zakończenie tego procesu znów jest nieprzejrzyste). Użycie pid2 i pid3 nie jest logiczne, skoro i tak od razu czekamy na zakończenie tych procesów.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...