2011-11-07 50 views
0

我有一个需要安装名为libnuma的库的c程序。但我没有在需要运行此程序的并行机器中拥有root权限。所以我下载了libnuma的源代​​码并编译了它。我有一个libnuma.a文件,我认为它是库。我需要将这个库与我拥有的c程序连接起来。该程序使用自动工具来生成配置文件和生成文件。我是autotools的新手。请告诉我,我必须做什么来链接这个库,而不是根。将从源代码构建的库链接到由autotools管理的程序

Ajay。

+0

当你说“哪个是根”时,你的意思是“没有根”吗? –

+0

是的,我做了..谢谢..现在改变它 –

回答

2

应该足以设置CPPFLAGS和LDFLAGS。首先,尝试:

 
$ ./configure LDFLAGS=-L/path/to/lib CPPFLAGS=-I/path/to/include 

(其中libnuma.a是/path/to/lib/libnuma.a和numa.h是/path/to/include/numa.h 也就是说,指定目录)如果这不起作用,请检查config.log以查看出了什么问题。如果您正在使用的程序配置脚本与旧版本的autoconf构建,你可能需要做:

 
$ LDFLAGS=-L/path/to/lib CPPFLAGS=-I/path/to/include ./configure 

代替。 (第二次调用只能在Bourne shell中工作,使用csh/tcsh时,需要以其他方式设置环境变量,例如使用env)。您还可以选择在shell的环境中进行这些设置(例如,在.bashrc中)或config.site文件中。

+0

嗨,我试过这个。我正在使用libnuma库。配置仍然说libnuma不存在。如果我使用apt-get以root权限安装libnuma,它会检测到库的存在。但是我没有在机器中拥有root权限,所以我不得不最终运行它。有什么办法可以解决这个问题吗? –

+0

检查config.log,看看它为什么没有检测到libnuma。开发人员有可能(并且不幸的是很常见)生成配置脚本,这些配置脚本无法正确识别LDFLAGS和CPPFLAGS的用户设置。另一种可能是你有一个陈旧的缓存(在config.log中搜索“缓存”)。在config.log中搜索libnuma。在检查numa.h时,配置脚本只是试图编译一个包含它的程序,并且config.log会显示你正在运行的命令。同样,当找到图书馆。在config.log中搜索“numa”。 –