Решено: gcc не собирает, а g++ собирает (почему?)

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

Аватара пользователя
balalaika
Сообщения: 30
ОС: Suse10.3

Решено: gcc не собирает, а g++ собирает

Сообщение balalaika »

Вечер добрый!

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

#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#define GRAVITY_    9.8         //ускорение свободного падения = 9.8 м/(с*с)
#define MAX_        1024

int main(int argc, char** argv) {

    FILE    *in, *out;         //работа с файлами test.in и test.out
    char    buff[MAX_];        //буфер для импорта данных
    float   height;            //высота, с которой падают камни
    float   time;              //искомая величина - время падения

    in = fopen( "test.in","r" );
    if( in  == NULL ) {
        printf( "Error: can`t open file \"test.in\"\n" );
        return( EXIT_FAILURE );
    }
    fgets( buff , MAX_ , in );
    fclose( in );

    height = atof( buff );
    time = sqrt( (height * 2) / GRAVITY_ );

    out = fopen( "test.out","w" );
    if( out == NULL ) {
        printf("Error: can`t create file \"test.out\"\n");
        return( EXIT_FAILURE );
    }
    fprintf( out , "%.2f" , time );
    fclose( out );

    return (EXIT_SUCCESS);
}


простенькая программка... собираю в Netbeans 6.7.1, в свойствах проекта указываю компилятор GCC - не компилируется, ругается на строку
time = sqrt( (height * 2) / GRAVITY_ );
что же с ней не так понять я не могу, уже весь мозг сломал
переключаю на компилятор G++ - собирается, зараза.
Проясните что не так плиз
Спасибо сказали:
Nymin
Сообщения: 1095
Статус: -
ОС: GNU/Linux

Re: Решено: gcc не собирает, а g++ собирает

Сообщение Nymin »

может быть в том, что gcc для Си, а g++ для C++ ? )
Спасибо сказали:
Аватара пользователя
Cra3y
Сообщения: 80
ОС: Debian

Re: Решено: gcc не собирает, а g++ собирает

Сообщение Cra3y »

Скорее всего, в профиле для С++ по умолчанию подключена математическая библиотека(ключ -lm), а в профиле для С - нет
Для примера:

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

~/docs/src/test
max@notebook > gcc -v
Спецификации прочитаны из /usr/lib/gcc/i486-slackware-linux/4.2.3/specs
Целевая архитектура: i486-slackware-linux
Параметры конфигурации: ../gcc-4.2.3/configure --prefix=/usr --enable-shared --enable-languages=ada,c,c++,fortran,java,objc --enable-threads=posix --enable-__cxa_atexit --disable-checking --with-gnu-ld --verbose --with-arch=i486 --target=i486-slackware-linux --host=i486-slackware-linux
Модель многопотоковости: posix
gcc версия 4.2.3
~/docs/src/test
max@notebook > gcc stones.c -o stones
/tmp/ccQfLtMl.o: In function `main':
stones.c:(.text+0xd1): undefined reference to `sqrt'
collect2: выполнение ld завершилось с кодом возврата 1
~/docs/src/test
max@notebook > gcc -lm stones.c -o stones
~/docs/src/test
max@notebook >

Как видите, с подключенной библиотекой всё прекрасно собирается
HP G62 (AMD Phenom II x3 1.8GHz 4GB DDR3 Ram) / Debian 8 amd64
Спасибо сказали:
Аватара пользователя
balalaika
Сообщения: 30
ОС: Suse10.3

Re: Решено: gcc не собирает, а g++ собирает

Сообщение balalaika »

Cra3y писал(а):
23.09.2009 23:52
Скорее всего, в профиле для С++ по умолчанию подключена математическая библиотека(ключ -lm), а в профиле для С - нет

Разобрался, спасибо за ответ
Спасибо сказали: