[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Problem compiling simple C program



On 16/04/2008, John Salmon <salmonjj@comcast.net> wrote:
> Sven Joachim <svenjoac@gmx.de> wrote in news:aiYRm-2Tc-23@gated-at.bofh.it:
>
>
>  > On 2008-04-15 20:39 +0200, John Salmon wrote:
>  >
>  >> I'm running Debian Etch on a PC. When I try to compile the following
>  >> (called test.c);
>  >>
>  >> #include <math.h>
>  >> #include <stdio.h>
>  >>
>  >> int main()
>  >> {
>  >>     double
>  >>         val = 1.55;
>  >>
>  >>     printf("sine: %g\n", sin(val));
>  >>
>  >>     return 0;
>  >> }
>  >>
>  >> using the command line
>  >>
>  >> gcc -Wall -o test test.c
>  >>
>  >> I get
>  >>
>  >> /tmp/cciDV02m.o: In function `main':
>  >> test.c:(.text+0x21): undefined reference to `sin'
>  >> collect2: ld returned 1 exit status
>  >
>  > You need to link to the math library by specifying -lm _at the end_ of
>  > the gcc command line, otherwise the linker does not know about the sin()
>  > function.
>  >
>  >> When I compile the equivalent C++ program using the apropriate C++
>  >> parameters, everything goes great. Have I neglected to load a Debian
>  >> package? Any help will be appreciated.
>  >
>  > That is to be expected, because C++ programs are automatically linked
>  > against the math library.  In C you have to tell the linker to use it
>  > with -lm.
>  >
>  > Sven
>  >
>  >
>
>
> That solved the linking problem. Now, after a successful compilation, when
>  I run 'test' I gen no output.   ???


"test" is a bash-builtin, and is a executable in /usr/bin/test, so
that is what you were running.
You can run your "test" command by typing
./test
or rename it to something else.


Reply to: