Решено: Make не хочет make (Непонятная проблема с автосборкой)

Модератор: Модераторы разделов

Аватара пользователя
LuckyStr
Сообщения: 159
ОС: Fedora

Решено: Make не хочет make

Сообщение LuckyStr »

Есть 3 файла:

  • 1.cpp

    Код: Выделить всё

    #include <stdio.h>
    #include <string.h>
    #include <iostream>
    #include <string>
    #include "fir.h"
    using namespace std;
    int main (int argc, char ** argv)
    {
    int i=argc-1;
    cout<<i<<endl;
    while (i>0){
    cout<<argv[i]<<endl;
    i--;
    }
    i=firs (argc);
    cout<<i<<endl;
    
      return 0;
    }
  • fir.cpp

    Код: Выделить всё

    #include <stdio.h>
    #include <string.h>
    #include <iostream>
    #include <string>
    #include "fir.h"
    using namespace std;
    int firs (int a)
    {
    int c=1;
    for (int b=0; b<a;b++)c=c*a;
    return c;
    }

  • fir.h

    Код: Выделить всё

    int firs (int a);


и есть к ним makefile:

Код: Выделить всё

#makefile 1

1: fir.o 1.o
    gcc -o 1 fir.o 1.o

fir.o: fir.cpp fir.h
    g++ -c fir.cpp

1.o: 1.cpp
    g++ -c 1.cpp

clean:
    rm -f *.o


При сборке пишет так:

Код: Выделить всё

$ make 1
g++     1.cpp   -o 1
/tmp/ccLP9Kez.o: In function `main':
1.cpp:(.text+0xe1): undefined reference to `firs(int)'
collect2: выполнение ld завершилось с кодом возврата 1
make: *** [1] Ошибка 1


А при ручной сборке все нормально, если это может как-то повлиять, то у меня fedora 10.
Спасибо.
Это наш химический дом для печальных жителей Земли!
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Решено: Make не хочет make

Сообщение Portnov »

А он у вас именно makefile называется, с маленькой буквы? Тогда ничего удивительного - make читает Makefile.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
Reboot
Сообщения: 321
Статус: Красен глаз -- темна душа

Re: Решено: Make не хочет make

Сообщение Reboot »

А при ручной сборке все нормально

а как ты руками собирал? :) везде ли ты g++ использовал, или как здесь в самый ответственный момент переключился на gcc?
//почитай про make, у него есть много фишек упрощающих написание. Очень.

ничего удивительного - make читает Makefile.

ой ли ;) даже из описания проблемы ясно, что это не так
Мой компьютер зовут Марвин
Спасибо сказали:
arch
Сообщения: 74
ОС: freebsd/arch

Re: Решено: Make не хочет make

Сообщение arch »

g++ 1.cpp -o 1

Что-то в показаном вами makefile такой строчки нет. У вас там часом не 2 make файла?
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Решено: Make не хочет make

Сообщение Portnov »

Насколько я понял, у товарища мейкфайл неправильно называется - с маленькой буквы, а make ищет файл Makefile (с большой) и не находит, поэтому использует 'умолчательное' правило для .cpp файлов.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
LuckyStr
Сообщения: 159
ОС: Fedora

Re: Решено: Make не хочет make

Сообщение LuckyStr »

Всем спасибо, ошибка была в том, что makefile написал с маленькой буквы
Это наш химический дом для печальных жителей Земли!
Спасибо сказали:
Аватара пользователя
Reboot
Сообщения: 321
Статус: Красен глаз -- темна душа

Re: Решено: Make не хочет make

Сообщение Reboot »

makefile написал с маленькой буквы

O_O тогда у меня вопрос
(man make) писал(а):make will look for the makefiles GNUmakefile, makefile, and Makefile, in that order

и почему у меня не собирается написанное в пером посте, даже при переменовании makefile в Makefile. И сыпется всё это счастье в момент объеденения объектных файлов gcc, но если использовать g++ то всё хорошо
Мой компьютер зовут Марвин
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Решено: Make не хочет make

Сообщение Portnov »

По поводу имени мейкфайла - может, это от версии make зависит?
По поводу почему gcc не собирает - ничего удивительного, gcc не знает что надо к этим объетникам ещё прилинковывать стандартную либу c++ (он же считает что программа на С), в итоге наверное жалуется на undefined references.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
Reboot
Сообщения: 321
Статус: Красен глаз -- темна душа

Re: Решено: Make не хочет make

Сообщение Reboot »

почему gcc не собирает - ничего удивительного

это понятно, меня удивляет, что
ошибка была в том, что makefile написал с маленькой буквы

т.е. gcc таки собрал? т.к. в первом посте написан gcc а не g++

а про имя мейкфайла -- может
Мой компьютер зовут Марвин
Спасибо сказали:
Аватара пользователя
LuckyStr
Сообщения: 159
ОС: Fedora

Re: Решено: Make не хочет make

Сообщение LuckyStr »

Reboot писал(а):
03.05.2009 14:00
почему gcc не собирает - ничего удивительного

это понятно, меня удивляет, что
ошибка была в том, что makefile написал с маленькой буквы

т.е. gcc таки собрал? т.к. в первом посте написан gcc а не g++

а про имя мейкфайла -- может

господа не сорьтесь, в посте я просто забыл исправить т.к. пробовал все варианты с g++ и gcc, на самом деле в fir.h везде именно g++
Это наш химический дом для печальных жителей Земли!
Спасибо сказали:
Аватара пользователя
Reboot
Сообщения: 321
Статус: Красен глаз -- темна душа

Re: Решено: Make не хочет make

Сообщение Reboot »

да никто и не ссорился, просто мне начало казаться, что у меня крыша едет :) рад, что в данном случае это не подтвердилось
Мой компьютер зовут Марвин
Спасибо сказали: