我正在尝试在我的 MacBook Pro(13 英寸,2012 年中)上的 Montecarlo 模拟上实现 gsl_rng.h。模拟全部用 C 语言编写。我的问题是 gcc-6 抱怨它找不到 gsl 库,尽管我认为编译标志很好。
declare.h 的顶部,它包含在我正在处理的所有 .c 文件中:
/* __________________ LIBRARIES ___________________*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <gsl/gsl_rng.h>
错误:
fatal error: gsl/gsl_rng.h: No such file or directory
我的 makefile 中包含的编译标志:
INCLUDE = -I/usr/local/Cellar/gsl/2.4/include
LINK = -L/usr/local/Cellar/gsl/2.4/lib -lgsl -lgslcblas
我通过 Homebrew 安装了 gcc-6 和 gsl。
如何让 gcc-6 找到 gsl?我的标志错了吗?
生成文件:
CC = g++-6
CFLAGS = -lm -O3 -ansi -pedantic -Wall -Wextra\
-Wconversion -Wredundant-decls -fmax-errors=7\
-Wunsafe-loop-optimizations -Wmissing-braces\
-Wparentheses
# -Wdouble-promotion
INCLUDE = -I/usr/local/Cellar/gsl/2.4/include
LINK = -L/usr/local/Cellar/gsl/2.4/lib -lgsl -lgslcblas
../bin/bidimensional_MC: random.o functions.o subroutines.o\
main.o
$(CC) -o ../bin/bidimensional_MC random.o functions.o\
subroutines.o main.o $(CFLAGS) $(LINK) $(INLCUDE)
random.o: random.c
$(CC) -c random.c -lm -O3 $(CFLAGS) $(INCLUDE)
functions.o: functions.c
$(CC) -c functions.c $(CFLAGS) $(INCLUDE)
main.o: main.c
$(CC) -c main.c $(CFLAGS) $(INCLUDE)
suboutines.o: subroutines.c
$(CC) -c subroutines.c $(CFLAGS) $(INCLUDE)
clean:
rm *.o
的输出ls /usr/local/Cellar/gsl/2.4/include/gsl/
是:
/usr/local/Cellar/gsl/2.4/include/gsl/gsl_rng.h
的输出ls /usr/local/Cellar/gsl/2.4/include/
是:
gsl/
的输出ls /usr/local/Cellar/gsl/2.4/include/gsl/
太长而无法发布,但一切都在那里,因为它应该。
额外信息:我使用 g++-6 而不是 gcc-6,因为我最终要在其中执行模拟的集群要求代码符合 C++。