[+] C - deklarowanie referencji - gcc

Potrzebujesz pomocy z C, C++, perl, python, itp.
Gwynbleidd
Posty: 6
Rejestracja: 16 kwietnia 2010, 08:13

[+] C - deklarowanie referencji - gcc

Post autor: Gwynbleidd »

Witam.

M
am problem w programie netbeans, a mianowicie z najprostszym programem:

Kod: Zaznacz cały

#include<stdio.h>#include<math.h>
int x=3;
float b=7.5;
float c;


float a;
int main(void)
{
    float i;
    printf("podaj zmienną c\n");
    scanf("%f", &c);
    i=c*c+b*b;
    printf("liczba i %f", i);
    a=pow(i, 1.0/2.0);
    printf("%f", a);        
    return 0;
}


Mam problem z funkcją ,,pow'', to znaczy z każdą inną także, gdy przekazuję do obojętnie jakiej funkcji zmienną gcc częstuje mnie:

Kod: Zaznacz cały

/home/wolf/NetBeansProjects/CppApplication_1/newfile.c:14: undefined reference to `pow'
collect2: ld returned 1 exit status
a cały log z kompilacji to:

Kod: Zaznacz cały

"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make[1]: Wejście do katalogu `/home/wolf/NetBeansProjects/CppApplication_1'
"/usr/bin/make"  -f nbproject/Makefile-Debug.mk dist/Debug/GNU-Linux-x86/cppapplication_1
make[2]: Wejście do katalogu `/home/wolf/NetBeansProjects/CppApplication_1'
mkdir -p dist/Debug/GNU-Linux-x86
gcc     -o dist/Debug/GNU-Linux-x86/cppapplication_1 build/Debug/GNU-Linux-x86/newfile.o  
build/Debug/GNU-Linux-x86/newfile.o: In function `main':
/home/wolf/NetBeansProjects/CppApplication_1/newfile.c:14: undefined reference to `pow'
collect2: ld returned 1 exit status
make[2]: *** [dist/Debug/GNU-Linux-x86/cppapplication_1] Błąd 1
make[2]: Opuszczenie katalogu `/home/wolf/NetBeansProjects/CppApplication_1'
make[1]: *** [.build-conf] Błąd 2
make[1]: Opuszczenie katalogu `/home/wolf/NetBeansProjects/CppApplication_1'
make: *** [.build-impl] Błąd 2


BUILD FAILED (exit value 2, total time: 864ms)
Co robić?
Awatar użytkownika
hello_world
Posty: 66
Rejestracja: 15 maja 2009, 21:03

Post autor: hello_world »

Kod: Zaznacz cały

gcc -o mojprogram mojprogram.c -lm

Kod: Zaznacz cały

#include <stdio.h>
#include <math.h>


    int x=3;
    float b=7.5;
    float c;
    float a;
int main(void)
{
    float i;
    printf("podaj zmienną c\n");
    scanf("%f", &c);
    i=(c*c)+(b*b);
    printf("liczba i %f\n", i);
    a=powf(i, 0.5);
    printf("%f", a);        
    

    return 0;
}
Gwynbleidd
Posty: 6
Rejestracja: 16 kwietnia 2010, 08:13

Post autor: Gwynbleidd »

hello_world, dziękuje za pomoc, oczywiście pomogło. A i za kilka rad, odnośnie kodu, również dziękuję.

Dodane:
Zainstalowałem teraz program eclipse i mam ten sam problem. Dodałem parametr -lm jednak dalej mam niezadeklarowaną referencje.

Oto co wyświetla mi IDE:

Kod: Zaznacz cały

make all Building file: ../src/jeden.c
Invoking: GCC C Compiler
gcc -O0 -g3 -Wall -c -fmessage-length=0 -lm -v -MMD -MP -MF"src/jeden.d" -MT"src/jeden.d" -o "src/jeden.o" "../src/jeden.c"
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.6/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 4.6.1-15' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++,go --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-plugin --enable-objc-gc --with-arch-32=i586 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
Finished building: ../src/jeden.c
gcc version 4.6.1 (Debian 4.6.1-15) 
 
COLLECT_GCC_OPTIONS='-O0' '-g3' '-Wall' '-c' '-fmessage-length=0' '-v' '-MMD' '-MP' '-MF' 'src/jeden.d' '-MT' 'src/jeden.d' '-o' 'src/jeden.o' '-mtune=generic' '-march=x86-64'
 /usr/lib/gcc/x86_64-linux-gnu/4.6/cc1 -quiet -v -imultilib . -imultiarch x86_64-linux-gnu -MMD src/jeden.d -MF src/jeden.d -MP -MT src/jeden.d -dD ../src/jeden.c -quiet -dumpbase jeden.c -mtune=generic -march=x86-64 -auxbase-strip src/jeden.o -g3 -O0 -Wall -version -fmessage-length=0 -o /tmp/ccypD3Qu.s
Building target: jeden
GNU C (Debian 4.6.1-15) version 4.6.1 (x86_64-linux-gnu)
Invoking: GCC C Linker
    compiled by GNU C version 4.6.1, GMP version 5.0.2, MPFR version 3.1.0, MPC version 0.9
gcc  -o "jeden"  ./src/jeden.o   
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../x86_64-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/x86_64-linux-gnu/4.6/include
 /usr/local/include
 /usr/lib/gcc/x86_64-linux-gnu/4.6/include-fixed
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.
GNU C (Debian 4.6.1-15) version 4.6.1 (x86_64-linux-gnu)
    compiled by GNU C version 4.6.1, GMP version 5.0.2, MPFR version 3.1.0, MPC version 0.9
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 0976cb1d7dfb8e8f549495a7543dd92b
../src/jeden.c: In function ‘main’:
../src/jeden.c:18:2: warning: implicit declaration of function ‘pow’ [-Wimplicit-function-declaration]
../src/jeden.c:18:4: warning: incompatible implicit declaration of built-in function ‘pow’ [enabled by default]
../src/jeden.c:17:8: warning: variable ‘y’ set but not used [-Wunused-but-set-variable]
../src/jeden.c:18:7: warning: ‘x’ is used uninitialized in this function [-Wuninitialized]
COLLECT_GCC_OPTIONS='-O0' '-g3' '-Wall' '-c' '-fmessage-length=0' '-v' '-MMD' '-MP' '-MF' 'src/jeden.d' '-MT' 'src/jeden.d' '-o' 'src/jeden.o' '-mtune=generic' '-march=x86-64'
 as --64 -o src/jeden.o /tmp/ccypD3Qu.s
COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.6/:/usr/lib/gcc/x86_64-linux-gnu/4.6/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.6/:/usr/lib/gcc/x86_64-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.6/:/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-O0' '-g3' '-Wall' '-c' '-fmessage-length=0' '-v' '-MMD' '-MP' '-MF' 'src/jeden.d' '-MT' 'src/jeden.d' '-o' 'src/jeden.o' '-mtune=generic' '-march=x86-64'
./src/jeden.o: In function `main':
/home/wolf/workspace/jeden/Debug/../src/jeden.c:18: undefined reference to `pow'
collect2: ld returned 1 exit status
make: *** [jeden] Błąd 1


**** Build Finished ****
no i samo źródło czysto testowe.

Kod: Zaznacz cały

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


int main(void) {
    puts("!!!Hello World!!!\n"); /* prints !!!Hello World!!! */
    float x;
    float y;
    y=pow(x, 0.3);
    printf("%f", x);
    return EXIT_SUCCESS;
}


P.S. Nie ma math.h - wiem ale nie to stanowi przyczynę problemu.
ODPOWIEDZ