Использовать gsl на Mac 10.6.3

#c #macos #precompiled-headers #gsl

#c #macos #предварительно скомпилированные заголовки #gsl

Вопрос:

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

Библиотека gsl расположена в /usr/local/lib, а головной файл расположен в / usr /local/.

Когда я компилирую свой код, я получаю следующую ошибку. Если я не укажу «-m32» в файле makefile, он по-прежнему выдает ту же ошибку, просто измените «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. Привет @Bavarious Я приложил код сборки и надеюсь, вы сможете разобраться в проблеме. Заранее благодарю вас

Ответ №1:

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

 -lgslcblas
  

к вашей переменной LIBS.

Комментарии:

1. У меня такая же проблема. Куда именно мне добавить -lgslcblas?. Я проделал некоторую хакерскую работу, разместив библиотеку в /usr / local / lib и добавив ее вручную в проект.

2. В вашем makefile после LIBS переменной или где-то, я не знаю, в XCode. Я не знаком с Mac.