LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 970|回复: 5

新手请教 XXX_CFLAGS XXX_LIBS请教

[复制链接]
发表于 2011-8-18 20:27:11 | 显示全部楼层 |阅读模式
小弟接触linux不久,最近安装guile的时候,用到几个包libffi,bdw-gc
这两个包我已经安装完了,并且把他们的bin,share,lib目录都加到了PATH里。
当时安装libffi的时候,说要设置LIBFFI_CFLAGS, LIBFFI_LIBS
两个环境变量,我是这么设置的:
setenv LIBFFI_CFLAGS -I/tools/openrisc/libffi/include
setenv LIBFFI_libs -L/tools/openrisc/libffi/lib

在编译guile的时候,出现了这样的错误
gen-scmconfig:
/tools/openrisc/libffi/lib : file not recognized, is a directory.
collect2 : load returned 1 exit status

我认为这个问题是因为 我的LIBFFI_CFLAGS, LIBFFI_LIBS设置不当造成的,因为我并不知道这两个参数到底应该怎么设置。
我google了一下,发现各种设置都有,比如:
1:去掉 -I 或 -L的
setenv LIBFFI_CFLAGS /tools/openrisc/libffi/include
2:设置 其他参数的 -Wl,-R
3:
LIBFFI_CFLAGS=-I/usr/local/lib/libffi-3.0.9/include
LIBFFI_CFLAGS=-L/usr/local/lib
LIBFFI_LIBS=-lffi.so.5
4:
Libs: -L${libdir} -lglib-2.0
Cflags: -I${includedir}/glib-2.0 -I${libdir}/glib-2.0/include

也就是说,对LIBS CFLAGS这两个参数,大家的设置都不同,是应该指定路径呢,还是应该指定参数呢,-L -I 之类的参数呢?

小弟不才,找不到明确的答案,故来论坛请教高手,可能太幼稚了,但还是请大侠们不吝赐教,谢谢

czzhenghello@gmail.com
 楼主| 发表于 2011-8-18 20:28:43 | 显示全部楼层
LIBS 是不是应该指定具体到某个库文件?
回复 支持 反对

使用道具 举报

发表于 2011-8-18 23:52:04 | 显示全部楼层
你是用你的系统自带的包管理系统装的吗?如果不是,可以试试用自带的包管理系统装。另外在libffi3.0.9的源码包里的README里,没有看到说要设置你说的环境变量啊。你指的需要设置这两个环境变量的要求是在哪儿呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-8-19 19:38:22 | 显示全部楼层
hi,ashi您好:
谢谢你的回复
我是自己编译source code然后安装,不是用包管理系统。
因为我在服务器上,没有上网的权限,用不成包管理系统,而且只有安装到指定目录的权限。
我说的需要设置这两个环境变量是在编译guile的时候出现的:
当执行configue的时候,出现如下信息:
Checking for LIBFFI: configure:error: Package requirements(libffi) were not met. NO Package 'libffi' found.
Consider adjusting the PKG-CONFIG_PATH enviroment variables if you installed software in a non-standard prefix.
Alternatively you may set the enviroment variables LIBFFI_CFLAGS and LIBFFI_LIBS to avoid the need to call pkg-config.

这是在没有安装libffi的时候出现的。我安装了libffi后,把share和bin目录都加到了PATH里,还是出现这样的问题,所以我设置了这两个环境变量,可是我根本不知道应该是怎么样的语法,怎么样设置,所以我怀疑我设置的有问题,请教大侠这里到底应该怎样设置。

我的pkg-config 工具应该是正常的,which pkg-config可以看到路径/usr/bin
所以上面说设置 PKG-CONFIG_PATH如果说的是设置 pkg-config的路径 我认为应该不用设,如果说的是设置libffi的路径,可是bdw-gc包有着和libffi完全一样的问题,也要设在这个变量里么。
回复 支持 反对

使用道具 举报

发表于 2011-8-19 19:54:41 | 显示全部楼层
Post by czzheng;2147318
hi,ashi您好:
谢谢你的回复
我是自己编译source code然后安装,不是用包管理系统。
因为我在服务器上,没有上网的权限,用不成包管理系统,而且只有安装到指定目录的权限。
我说的需要设置这两个环境变量是在编译guile的时候出现的:
当执行configue的时候,出现如下信息:
Checking for LIBFFI: configure:error: Package requirements(libffi) were not met. NO Package 'libffi' found.
Consider adjusting the PKG-CONFIG_PATH enviroment variables if you installed software in a non-standard prefix.
Alternatively you may set the enviroment variables LIBFFI_CFLAGS and LIBFFI_LIBS to avoid the need to call pkg-config.

这是在没有安装libffi的时候出现的。我安装了libffi后,把share和bin目录都加到了PATH里,还是出现这样的问题,所以我设置了这两个环境变量,可是我根本不知道应该是怎么样的语法,怎么样设置,所以我怀疑我设置的有问题,请教大侠这里到底应该怎样设置。

我的pkg-config 工具应该是正常的,which pkg-config可以看到路径/usr/bin
所以上面说设置 PKG-CONFIG_PATH如果说的是设置 pkg-config的路径 我认为应该不用设,如果说的是设置libffi的路径,可是bdw-gc包有着和libffi完全一样的问题,也要设在这个变量里么。
hi,czzheng,设置环境变量可以这样子设置:
export LIBFFI_CFLAGS=/tools/openrisc/libffi/include
export LIBFFI_LIBS=/tools/openrisc/libffi/lib
你试试看可不可以。另外,pkg-config它的作用是导出GCC需要的CFLAGS和LIBS参数,让GCC使用。不过它也需要配置一下(参看这里:http://blog.csdn.net/absurd/article/details/599813)。如果上面设置环境变量的方式行不通,可以试试pkg-config。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-8-19 20:46:32 | 显示全部楼层
hi.ashi
谢谢你的快速回复
我刚才看了guile的README,参考其中一个关于CFLAGS AND LIBS的设置(不是针对LIBFFI的)试了一下设置:
setenv LIBFFI_CFLAGS -I/tools/openrisc/libffi/lib/libffi-3.0.9/include
setenv LIBFFI_LIBS -l/tools/openrisc/libffi/lib
libffi 安装目录下没有include目录,在lib子目录下存在
bdw-gc 也类似设置。
这样,configue可以过了,没有再出现上面的问题。
但是,在make的时候,又出现了很多undefined reference to XXX 的error.
如: ../libs/libguile-2.0.so: undefined reference to  GC-Gcollect
ffi_type_float .....
看来还有哪里没有设置好
郁闷啊
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表