#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.