Re: [Dev-C++] linker error when cross compiling thru cygwin
Open Source C & C++ IDE for Windows
Brought to you by:
claplace
|
From: Per W. <pw...@ia...> - 2008-07-18 00:12:02
|
You don't specify what library to use.
C and C++ do not automagically try all libraries, just because you add
them in your search path. -L <directory> just tells the linker where to
look for a library that you have explicitly included in the linking. There
are a few exceptions, which allows the standard RTL to be linked without
you specifying the name.
If you somewhere in all the library directories you specified has a file
named libgsl.a, then you should have had a -lgsl to tell the linker to
make use of this gsl library.
/pwm
On Mon, 14 Jul 2008, Tim Rambo wrote:
> hey all,
>
> I'm trying to use gsl to do some linear algebra, and right now I'm just trying to compile this example code from the gnu website:
>
> #include <stdio.h>
> #include <gsl/gsl_linalg.h>
>
>
> int
> main (void)
> {
> double a_data[] = { 0.18, 0.60, 0.57, 0.96,
> 0.41, 0.24, 0.99, 0.58,
> 0.14, 0.30, 0.97, 0.66,
> 0.51, 0.13, 0.19, 0.85 };
>
> double b_data[] = { 1.0, 2.0, 3.0, 4.0 };
>
> gsl_matrix_view m
> = gsl_matrix_view_array (a_data, 4, 4);
>
> gsl_vector_view b
> = gsl_vector_view_array (b_data, 4);
>
> gsl_vector *x = gsl_vector_alloc (4);
>
> int s;
>
> gsl_permutation * p = gsl_permutation_alloc (4);
>
> gsl_linalg_LU_decomp (&m.matrix, p, &s);
>
> gsl_linalg_LU_solve (&m.matrix, p, &b.vector, x);
>
> printf ("x = \n");
> gsl_vector_fprintf (stdout, x, "%g");
>
> gsl_permutation_free (p);
> gsl_vector_free (x);
> return 0;
> }
>
>
> I'm using a crosstool through cygwin to compile for an ARM processor. The compile log looks like this:
>
> Building Makefile: "C:\Documents and Settings\student\Desktop\sepatriot\spa pc\gsl-test\Makefile.win"
> Executing make...
> make.exe -f "C:\Documents and Settings\student\Desktop\sepatriot\spa pc\gsl-test\Makefile.win" all
> arm-unknown-linux-gnu-gcc.exe test-gsl.o -o "gsl-test.exe" -L"C:/cygwin/opt/crosstool/gcc-3.3.4-glibc-2.3.2/arm-unknown-linux-gnu/lib" -L/cygdrive/c/cygwin/opt/crosstool//gcc-3.3.4-glibc-2.3.2/arm-unknown-linux-gnu/lib -L/cygdrive/c/cygwin/opt/crosstool//gcc-3.3.4-glibc-2.3.2/arm-unknown-linux-gnu/usr/include -lgsl -lm -lgslcblas
>
> Building Makefile: "C:\Documents and Settings\student\Desktop\sepatriot\spa pc\gsl-test\Makefile.win"
> Executing make...
> make.exe -f "C:\Documents and Settings\student\Desktop\sepatriot\spa pc\gsl-test\Makefile.win" all
> arm-unknown-linux-gnu-gcc.exe test-gsl.o -o "gsl-test.exe" -L"C:/cygwin/opt/crosstool/gcc-3.3.4-glibc-2.3.2/arm-unknown-linux-gnu/lib" -L"C:/cygwin/opt/crosstool/gcc-3.3.4-glibc-2.3.2/arm-unknown-linux-gnu/arm-unknown-linux-gnu/lib" -L"C:/cygwin/lib" -L/cygdrive/c/cygwin/opt/crosstool//gcc-3.3.4-glibc-2.3.2/arm-unknown-linux-gnu/lib -L/cygdrive/c/cygwin/opt/crosstool//gcc-3.3.4-glibc-2.3.2/arm-unknown-linux-gnu/usr/include -lgsl -lm -lgslcblas
>
> test-gsl.o(.text+0x60): In function `main':
> : undefined reference to `gsl_matrix_view_array'
> test-gsl.o(.text+0x78): In function `main':
> : undefined reference to `gsl_vector_view_array'
> test-gsl.o(.text+0x80): In function `main':
> : undefined reference to `gsl_vector_alloc'
> test-gsl.o(.text+0x90): In function `main':
> : undefined reference to `gsl_permutation_alloc'
> test-gsl.o(.text+0xac): In function `main':
> : undefined reference to `gsl_linalg_LU_decomp'
> test-gsl.o(.text+0xc4): In function `main':
> : undefined reference to `gsl_linalg_LU_solve'
> test-gsl.o(.text+0xe0): In function `main':
> : undefined reference to `gsl_vector_fprintf'
> test-gsl.o(.text+0xe8): In function `main':
> : undefined reference to `gsl_permutation_free'
> test-gsl.o(.text+0xf0): In function `main':
> : undefined reference to `gsl_vector_free'
> collect2: ld returned 1 exit status
> make.exe: *** [gsl-test.exe] Error 1
>
> Execution terminated
>
> the reason that this confuses me is that I have the libraries stored in: C:\cygwin\lib and the includes for gsl in: C:\cygwin\usr\include. If anybody can help me out I will be eternally grateful.
>
>
> TMR
>
>
>
|