b*********7 发帖数: 12 | 1 最近要做统计方面的一个 project,需要用到该领域一牛人用的C code,首先就要安装
他给的library, 链接如下:http://www.math.ntnu.no/~hrue/GMRFLib/
需要下载的是GMRFLib-3.0-0-snapshot.tgz, 在unix下解压以后没法安装,我对unix
不是很熟悉,发信问原作者没有回应,请各位牛人帮忙看看。
cd 到解压文件夹以后,运行make出现很多错误如下:(
Makefile在解压文件夹里,哪位好心人给看看,帮了我大忙了,在此先提前谢了!!)
bash-2.05b$ make
gcc -g -Wall -O3 -fomit-frame-pointer -fexceptions -funroll-loops -DHAVE_
INLINE -I.. -DGMRFLib_PATH=\"/usr/local/doc/GMRFLib/data\" -I/usr/local/
include -c -o problem-setup.o problem-setup.c
In file included from problem- |
f*****Q 发帖数: 1912 | |
b*********7 发帖数: 12 | 3 好像没有,汗。。。对我这个library很重要么?
怎么安装GSL呢?麻烦能不能给详细一点的instruction,我对unix实在不熟悉。
多谢!! |
b*********7 发帖数: 12 | 4 怎么样知道gsl安装了没有,用什么命令可以check? |
c**t 发帖数: 2744 | 5 it's very important: GNU Scientific Library
【在 b*********7 的大作中提到】 : 好像没有,汗。。。对我这个library很重要么? : 怎么安装GSL呢?麻烦能不能给详细一点的instruction,我对unix实在不熟悉。 : 多谢!!
|
y****e 发帖数: 23939 | 6 你要是在red hat系列下(RHEL,Fedora,CentOS),用yum就可以装好 |
k****e 发帖数: 100 | 7 一般会带 gsl-config
你执行 gsl-config 看看
如果是管理员自己编译安装的,locate gsl-config 看看有没有
如果locate的database没有的话。。。。。。。。。find。。。。
【在 b*********7 的大作中提到】 : 怎么样知道gsl安装了没有,用什么命令可以check?
|
r****t 发帖数: 10904 | 8 我对 unix 也不熟悉,你要装 gsl 的 dev 包,怎么装就不知道了。
要不自己 compile gsl 行了。 |
y****e 发帖数: 23939 | 9 我试着下载了这个软件,编译通过没有问题,最后得到两个static library:
libGMRFLib-geo.a 和 libGMRFLib.a
只要装个gsl-dev就可以了,他也提供binary下载的,你要是实在不会的话,为什么不
装binary呢?
unix
【在 b*********7 的大作中提到】 : 最近要做统计方面的一个 project,需要用到该领域一牛人用的C code,首先就要安装 : 他给的library, 链接如下:http://www.math.ntnu.no/~hrue/GMRFLib/ : 需要下载的是GMRFLib-3.0-0-snapshot.tgz, 在unix下解压以后没法安装,我对unix : 不是很熟悉,发信问原作者没有回应,请各位牛人帮忙看看。 : cd 到解压文件夹以后,运行make出现很多错误如下:( : Makefile在解压文件夹里,哪位好心人给看看,帮了我大忙了,在此先提前谢了!!) : bash-2.05b$ make : gcc -g -Wall -O3 -fomit-frame-pointer -fexceptions -funroll-loops -DHAVE_ : INLINE -I.. -DGMRFLib_PATH=\"/usr/local/doc/GMRFLib/data\" -I/usr/local/ : include -c -o problem-setup.o problem-setup.c
|
b*********7 发帖数: 12 | 10 这位大哥,我不是不想装binary啊,我实在是对unix一窍不通。
我今天找人帮忙装了GSL在我自己的 directory下(/home/me/GSL),然后再去装这个
library,(library 在 /home/me/GMRF/GMRFLib-3.0-0-snapshot/GMRFLib),还是不
行,汗死了,出错几乎是一样的。。。
请问你是怎么装成功的,装完以后的两个static library在哪个文件夹下面?
你直接make然后make install就可以了么?
不好意思啊,感觉自己象白痴一样。。。
【在 y****e 的大作中提到】 : 我试着下载了这个软件,编译通过没有问题,最后得到两个static library: : libGMRFLib-geo.a 和 libGMRFLib.a : 只要装个gsl-dev就可以了,他也提供binary下载的,你要是实在不会的话,为什么不 : 装binary呢? : : unix
|
|
|
t****t 发帖数: 6806 | 11 你还是找人帮你装吧.一两句话说不清楚的...
【在 b*********7 的大作中提到】 : 这位大哥,我不是不想装binary啊,我实在是对unix一窍不通。 : 我今天找人帮忙装了GSL在我自己的 directory下(/home/me/GSL),然后再去装这个 : library,(library 在 /home/me/GMRF/GMRFLib-3.0-0-snapshot/GMRFLib),还是不 : 行,汗死了,出错几乎是一样的。。。 : 请问你是怎么装成功的,装完以后的两个static library在哪个文件夹下面? : 你直接make然后make install就可以了么? : 不好意思啊,感觉自己象白痴一样。。。
|
b*********7 发帖数: 12 | 12 找不到人了现在,今天下午还是找一个不是很熟的人,然后他再去找另外一个人,跑来
敲了几下键盘就走了,实在不好意思再去找人家。
你能不能给一个稍微详细一点的instruction,针对这个library就可以,感激不尽!!
【在 t****t 的大作中提到】 : 你还是找人帮你装吧.一两句话说不清楚的...
|
t****t 发帖数: 6806 | 13 很难弄的, 你要让gcc能看到gsl的include file, 还要让gcc/ld能看到gsl的library
file
你找你装好的gsl, .h文件在什么地方? 比如说有/home/me/GSL/include/gsl/gsl_blas
.h
那你可以试试
CPPFLAGS=-I/home/me/GSL/include
你装好的gsl, .a或者.so在什么地方? 比如有/home/me/GSL/lib/libgsl.a, 你可以试试
LIBS=-L/home/me/GSL/lib
所以你可以写
env CPPFLAGS=-I/home/me/GSL LIBS=-L/home/me/GSL/lib make
但是这都不一定有用, 取决于这个作者的makefile是怎么写的
所以我说一两句话说不清楚, 基本上要看到你的机器才行, 我也没用过gsl, 只是对
UNIX熟一点 |
b*********7 发帖数: 12 | 14 我试了,好像不行:(
Makefile 全文如下,麻烦这位大侠再给看看,好人啊!!!
# $Id: GMRFLib-Makefile,v 1.56 2007/09/06 21:57:38 hrue Exp $
# USER OPTIONS
# the full path to where to install the library, headerfiles and docs.
# if you use a relative path, you have to modify the Makefile in the
# $(PREFIX)/doc/examples yourself.
PREFIX = /usr/local
# what to call the library
GMRFLibNAME = GMRFLib
# select compilers and optimized compiler-options. add -march=.... etc
yourself
CC = gcc
FC = gfortran
FCEXTRAFLAGS = -fno-second-unders
【在 t****t 的大作中提到】 : 很难弄的, 你要让gcc能看到gsl的include file, 还要让gcc/ld能看到gsl的library : file : 你找你装好的gsl, .h文件在什么地方? 比如说有/home/me/GSL/include/gsl/gsl_blas : .h : 那你可以试试 : CPPFLAGS=-I/home/me/GSL/include : 你装好的gsl, .a或者.so在什么地方? 比如有/home/me/GSL/lib/libgsl.a, 你可以试试 : LIBS=-L/home/me/GSL/lib : 所以你可以写 : env CPPFLAGS=-I/home/me/GSL LIBS=-L/home/me/GSL/lib make
|
k****e 发帖数: 100 | 15 根据你后面贴的Makefile,这个问题你还是找高人吧
Makefile 里面没有 -lgsl -lgslcblas
作者是自己装的gsl,而且不是 标准的 include/gsl/gsl_*.h
形式。
还有,你的 bash-2.05b$ 让我看上去有点怕怕的,不知道你的环境设的如何。
我看你还是找人吧,别浪费时间了,你不一定能搞定的。
unix
【在 b*********7 的大作中提到】 : 最近要做统计方面的一个 project,需要用到该领域一牛人用的C code,首先就要安装 : 他给的library, 链接如下:http://www.math.ntnu.no/~hrue/GMRFLib/ : 需要下载的是GMRFLib-3.0-0-snapshot.tgz, 在unix下解压以后没法安装,我对unix : 不是很熟悉,发信问原作者没有回应,请各位牛人帮忙看看。 : cd 到解压文件夹以后,运行make出现很多错误如下:( : Makefile在解压文件夹里,哪位好心人给看看,帮了我大忙了,在此先提前谢了!!) : bash-2.05b$ make : gcc -g -Wall -O3 -fomit-frame-pointer -fexceptions -funroll-loops -DHAVE_ : INLINE -I.. -DGMRFLib_PATH=\"/usr/local/doc/GMRFLib/data\" -I/usr/local/ : include -c -o problem-setup.o problem-setup.c
|
t****t 发帖数: 6806 | 16 try:
env LEXTPREFIX=/home/me/GSL make
【在 b*********7 的大作中提到】 : 我试了,好像不行:( : Makefile 全文如下,麻烦这位大侠再给看看,好人啊!!! : # $Id: GMRFLib-Makefile,v 1.56 2007/09/06 21:57:38 hrue Exp $ : # USER OPTIONS : # the full path to where to install the library, headerfiles and docs. : # if you use a relative path, you have to modify the Makefile in the : # $(PREFIX)/doc/examples yourself. : PREFIX = /usr/local : # what to call the library : GMRFLibNAME = GMRFLib
|
r****t 发帖数: 10904 | 17 你到底看了 Makefile 没有,开头有很多你要改的东西。
/usr/local/lib 下面要有这些列出来的库,/usr/local/include 下面要有这些库的头
文件。没有的话或者按位置装好,或者装好再改这几行。
初用 make, 用 make -d 然后看看出错信息,理解不了贴上来问。你现在的问题是 gcc 在你给的 -I 选项里面列的目录里面找不到 GSL 的头文件,你就给个含有头文件的 -I path 就可以过这一步了。
# The path to the external libraries: metis, taucs, lapack, blas and zlib
LEXTPREFIX = /usr/local
LEXTLIBS = -L$(LEXTPREFIX)/lib
IEXTLIBS = -I$(LEXTPREFIX)/include
这还没列 GSL, 你要是 GSL 装在
/home/me/GSL
上面有两行你要改成
LEXTLIBS = -L$(LEXTPREFIX)/lib -L/home/me/GSL/lib
IEXTLIBS = -I$(LEXTP
【在 b*********7 的大作中提到】 : 我试了,好像不行:( : Makefile 全文如下,麻烦这位大侠再给看看,好人啊!!! : # $Id: GMRFLib-Makefile,v 1.56 2007/09/06 21:57:38 hrue Exp $ : # USER OPTIONS : # the full path to where to install the library, headerfiles and docs. : # if you use a relative path, you have to modify the Makefile in the : # $(PREFIX)/doc/examples yourself. : PREFIX = /usr/local : # what to call the library : GMRFLibNAME = GMRFLib
|
t****t 发帖数: 6806 | 18 他明显看不懂...
【在 r****t 的大作中提到】 : 你到底看了 Makefile 没有,开头有很多你要改的东西。 : /usr/local/lib 下面要有这些列出来的库,/usr/local/include 下面要有这些库的头 : 文件。没有的话或者按位置装好,或者装好再改这几行。 : 初用 make, 用 make -d 然后看看出错信息,理解不了贴上来问。你现在的问题是 gcc 在你给的 -I 选项里面列的目录里面找不到 GSL 的头文件,你就给个含有头文件的 -I path 就可以过这一步了。 : # The path to the external libraries: metis, taucs, lapack, blas and zlib : LEXTPREFIX = /usr/local : LEXTLIBS = -L$(LEXTPREFIX)/lib : IEXTLIBS = -I$(LEXTPREFIX)/include : 这还没列 GSL, 你要是 GSL 装在 : /home/me/GSL
|
r****t 发帖数: 10904 | 19 咱好人做到底,其实也不难,gcc 的基本用法花半个小时入个门,Makefile 也不用完全懂,至少装个程序该没问题。
你把 Makefile 开头部分改成这样再看看你能不能通过那一步,之后你还有好几个 library 要装,我建议你都装在 /home/me/usr/ 里面:
# USER OPTIONS
# the full path to where to install the library, headerfiles and docs.
# if you use a relative path, you have to modify the Makefile in the
# $(PREFIX)/doc/examples yourself.
PREFIX = /home/me/GMRF
# what to call the library
GMRFLibNAME = GMRFLib
# select compilers and optimized compiler-options. add -march=.... etc
yourself
CC = gcc
FC = gfortr
【在 b*********7 的大作中提到】 : 我试了,好像不行:( : Makefile 全文如下,麻烦这位大侠再给看看,好人啊!!! : # $Id: GMRFLib-Makefile,v 1.56 2007/09/06 21:57:38 hrue Exp $ : # USER OPTIONS : # the full path to where to install the library, headerfiles and docs. : # if you use a relative path, you have to modify the Makefile in the : # $(PREFIX)/doc/examples yourself. : PREFIX = /usr/local : # what to call the library : GMRFLibNAME = GMRFLib
|
r****t 发帖数: 10904 | 20 他还要用这个 code 的,这个样子怎么用。。
【在 t****t 的大作中提到】 : 他明显看不懂...
|
|
|
b*********7 发帖数: 12 | 21 汗如雨下。。。。。。。。。
多谢各位大侠,我来试试看。如果还有问题还请各位大侠不吝赐教。
再次表示感谢!!
【在 r****t 的大作中提到】 : 他还要用这个 code 的,这个样子怎么用。。
|
b*********7 发帖数: 12 | 22 各位大侠,我回去反复试了各位出的高招,现在make似乎没有什么太大问题,但出现了
新的问题,(如果是新的话。。。)
用该 Library 需要包含如下头文件:#include "GMRFLib/GMRFLib.h",而 GMRFLib.h
中包含了gsl头文件:
#include
#include
#include
#include
#include
。。。
。。。
和这个library自己的头文件:
#include "GMRFLib/init.h"
#include "GMRFLib/utils.h"
#include "GMRFLib/io.h"
#include "GMRFLib/taucs.h"
#include "GMRFLib/compatibility.h"
#include "GMRFLib/random.h"
。。。。。。。
这里用<>表示gsl是系统文件,但我只有权限把gsl装在我自 |
p****s 发帖数: 32405 | 23 把系统include改成绝对路径的include, 只要你自己装的gsl包里有以下头文件,
gsl_math.h, etc
【在 b*********7 的大作中提到】 : 各位大侠,我回去反复试了各位出的高招,现在make似乎没有什么太大问题,但出现了 : 新的问题,(如果是新的话。。。) : 用该 Library 需要包含如下头文件:#include "GMRFLib/GMRFLib.h",而 GMRFLib.h : 中包含了gsl头文件: : #include : #include : #include : #include : #include : 。。。
|
r****t 发帖数: 10904 | 24 /home/me/GSL/include 下面有没有 "gsl/gsl_blas.h"? 没有就不行。
调节你的 -I选项直到包括 "gsl/gsl_blas.h" 的父目录为止,应该就可以了。
不应该在 code 里面写绝对路径的 #include.
h
【在 b*********7 的大作中提到】 : 各位大侠,我回去反复试了各位出的高招,现在make似乎没有什么太大问题,但出现了 : 新的问题,(如果是新的话。。。) : 用该 Library 需要包含如下头文件:#include "GMRFLib/GMRFLib.h",而 GMRFLib.h : 中包含了gsl头文件: : #include : #include : #include : #include : #include : 。。。
|
b*********7 发帖数: 12 | 25 有呀,还是不行。是不是应该把GMRFLib.h里面的
#include ... 都改成 #include"gsl/gsl_blash.h>....?
如果是这样就太麻烦了,因为经常有gsl_*.h 里面又有包含#include的
【在 r****t 的大作中提到】 : /home/me/GSL/include 下面有没有 "gsl/gsl_blas.h"? 没有就不行。 : 调节你的 -I选项直到包括 "gsl/gsl_blas.h" 的父目录为止,应该就可以了。 : 不应该在 code 里面写绝对路径的 #include. : : h
|
r****t 发帖数: 10904 | 26 那我就看不出来了,至少从
http://gcc.gnu.org/onlinedocs/cpp/Include-Syntax.html
来看没理由不行, 要么就是更深奥的问题我也搞不懂。
你要是能贴出出错信息来会比较好,copy/paste 可以么?
ls /home/me/GSL/
ls /home/me/GSL/include/
都是什么
>的
【在 b*********7 的大作中提到】 : 有呀,还是不行。是不是应该把GMRFLib.h里面的 : #include ... 都改成 #include"gsl/gsl_blash.h>....? : 如果是这样就太麻烦了,因为经常有gsl_*.h 里面又有包含#include的
|
b*********7 发帖数: 12 | 27 不好意思,回帖晚了。
不过好像现在的错误又变了,刚才可能我没加上lib包含路径,现在加上以后出错信息
如下:
bash-2.05b$ gcc -I/home/me/GSL/include -I/home/me/GMRF/local/include -L/home
/me/GMRF/local/lib -L/home/me/GSL/lib -o test2 test2.c
Undefined first referenced
symbol in file
GMRFLib_free_graph /var/tmp//cclSOuVa.o
GMRFLib_read_graph /var/tmp//cclSOuVa.o
GMRFLib_print_graph /var/tmp//cclSOuVa.o
GMRFLib_compute_subgraph /var/tmp//cclS
【在 r****t 的大作中提到】 : 那我就看不出来了,至少从 : http://gcc.gnu.org/onlinedocs/cpp/Include-Syntax.html : 来看没理由不行, 要么就是更深奥的问题我也搞不懂。 : 你要是能贴出出错信息来会比较好,copy/paste 可以么? : ls /home/me/GSL/ : ls /home/me/GSL/include/ : 都是什么 : : >的
|
p***o 发帖数: 1252 | 28 差不多了,ld是linker,你都编译通过了,lib没加上。
你试试把-lGMRFLib加到命令行,如果不行的话看看
/home/me/GMRF/local/lib和/home/me/GSL/lib下都有啥。
home
【在 b*********7 的大作中提到】 : 不好意思,回帖晚了。 : 不过好像现在的错误又变了,刚才可能我没加上lib包含路径,现在加上以后出错信息 : 如下: : bash-2.05b$ gcc -I/home/me/GSL/include -I/home/me/GMRF/local/include -L/home : /me/GMRF/local/lib -L/home/me/GSL/lib -o test2 test2.c : Undefined first referenced : symbol in file : GMRFLib_free_graph /var/tmp//cclSOuVa.o : GMRFLib_read_graph /var/tmp//cclSOuVa.o : GMRFLib_print_graph /var/tmp//cclSOuVa.o
|