Используйте gsl на Mac 10.6.3 - PullRequest
0 голосов
/ 07 мая 2011

У меня недавно был проект, использующий GSL. После того, как я установил пакет GSL на Mac 10.6.3. Я не могу скомпилировать свой код.

gsl lib находится в / usr / local / lib, а заголовочный файл - в / usr / local /.

Когда я компилирую свой код, я получаю следующую ошибку. Если я не указываю "-m32" в make-файле, он все равно выдает ту же ошибку, просто измените "i386" на "x86_64". Может кто-нибудь мне помочь?

Спасибо!

#include <gsl/gsl_vector.h>
#include <gsl/gsl_multiroots.h>

Кстати, я должен включить gsl, как указано выше? на самом деле я совсем новичок в программировании.

Undefined symbols for architecture i386:
"_gsl_vector_get", referenced from:
  gsl_root_finding::print_state(unsigned long, gsl_multiroot_fdfsolver*)in test_guide.o
  gsl_root_finding::print_state(unsigned long, gsl_multiroot_fsolver*)in test_guide.o
  gsl_root_finding::mm_f(gsl_vector const*, void*, gsl_vector*)in test_guide.o
  gsl_root_finding::process(int, double*, double, double)in test_guide.o
  gsl_root_finding::mm_fdf(gsl_vector const*, void*, gsl_vector*, gsl_matrix*)in test_guide.o
  gsl_root_finding::mm_df(gsl_vector const*, void*, gsl_matrix*)in test_guide.o
"_gsl_vector_set", referenced from:
  gsl_root_finding::mm_f(gsl_vector const*, void*, gsl_vector*)in test_guide.o
  gsl_root_finding::process(int, double*, double, double)in test_guide.o
  gsl_root_finding::mm_fdf(gsl_vector const*, void*, gsl_vector*, gsl_matrix*)in test_guide.o
  gsl_root_finding::mm_df(gsl_vector const*, void*, gsl_matrix*)in test_guide.o

ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status
make: *** [test_guide] Error 1

Код сборки:

CC = g++
OPT = -pg -g -I../include -L../libs -I../../Matrix-1.0/include -I../../bessel-1.1/include  -L../../Matrix-1.0/libs -L../../bessel-1.1/libs -L/usr/local/lib
LIBS =  -lfmm -lssi -lsparse -lbessel -lg2c -lgfortran -lgsl
.SUFFIXES : .o .cpp 

test_guide: test_guide.o
  ${CC} -o $@ ${OPT} test_guide.o ${LIBS} 

1 Ответ

2 голосов
/ 08 мая 2011

Я не уверен, но я думаю, что вам нужно будет также связаться с библиотекой BLAS GSL. Ваша неопределенная ссылка на x86_64, по-видимому, подразумевает столько же (подсказка, которую я использую, blas.o) Просто добавьте

-lgslcblas

в вашу переменную LIBS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...