Linux 下编译依赖顺序

changhaoyufish 2010-08-23 06:43:36
前提:电脑是公司的,普通员工没有安装软件的权限,这些都是IT部门管的,在计算机上,除了/sandbox其他文件夹都没有写文件的权力,只能读,yum rpm什么的安装都不行,只能自己下src编译。

1。我用的是centos5.5,想编译virtualbox,在confgiure的时候他会检查依赖项
Checking for environment: Determined build machine: linux.x86, target machine: linux.x86, OK.
Checking for kBuild: found, OK.
Checking for gcc: found version 4.1.2, OK.
Checking for as86: found version 0.16.17, OK.
Checking for bcc: found version 0.16.17, OK.
Checking for iasl: found version 20100806, OK.
Checking for xslt: found, OK.
Checking for mkisofs: found mkisofs 2.01 (cpu-pc-linux-gnu), OK.
Checking for pthread: found, OK.
Checking for libxml2: found version 2.6.26, OK.
Checking for libxslt: found version 1.1.17, OK.
Checking for libIDL: found version 0.8.7, OK.
Checking for ssl: found version OpenSSL 0.9.8e-rhel5 01 Jul 2008, OK.
Checking for libcurl: found version 7.15.5, expected version 7.16.1 or higher

检查到libcurl之后提示版本太低,要求7.16.1,于是我安装了新版本的。
7.15.5版本安装在/usr下,我编译安装的7.21.1在/sandbox下,但是configure的时候却找到了/usr下的7.15.5,但是没有去找/sandbox下的7.21.1,我想知道有什么办法能指定libcurl的目录或者能让configure先搜索到7.21.1,在或者有其他办法通过configure

2。我安装intltool的时候要先安装XML::Parser
下载了XML::Parser的源码
命令是perl Makefile.pm, make , make install
好像 perl Makefile.pm不能指定安装的路径,想configure那样,这样他默认又安装到/usr下面的了,但是我又没有写的权力,所以在make install的时候出错。
我把生成的makefile文件里面的/usr全部换成/sandbox(要调用perl的没有还),make和make install都能过,但是继续configure intltool发现还是提示XML::Parser没有安装

求一个解决办法
...全文
309 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
changhaoyufish 2010-08-31
  • 打赏
  • 举报
回复
谢谢几位帮忙,vbox的依赖项全部过了,但是make的是有问题,先结贴~最近比较忙,以后有时间在继续弄,到时候再问
wwwunix 2010-08-24
  • 打赏
  • 举报
回复
初步估计如下:
LIBCURL_VERSION的定义在头文件#include <curl/curl.h>中。
而你的这条语句引用的是系统的curl/curl.h文件,即7.15.5版本的头文件。
你试着改变这条语句到你的/sandbox下的对应的头文件看看。
changhaoyufish 2010-08-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wwwunix 的回复:]

1、在configure脚本中找到检查libcurl的代码,强制修改到/sandbox下就行了。
2、同样在inttool的configure脚本中找到检查XML::Parser的地方,然后强制修改到/sandbox下。
[/Quote]

#
# Check for libcurl, needed by S3
#
check_curl()
{
if [ -z "$BUILD_LIBCURL" ]; then
test_header libcurl
cat > $ODIR.tmp_src.cc << EOF
#include <cstdio>
#include <curl/curl.h>
extern "C" int main(void)
{
printf("found version %s", LIBCURL_VERSION);
#if 10000*LIBCURL_VERSION_MAJOR + 100*LIBCURL_VERSION_MINOR + LIBCURL_VERSION_PATCH >= 71601
printf(", OK.\n");
return 0;
#else
printf(", expected version 7.16.1 or higher\n");
return 1;
#endif
}
EOF
[ -n "$INCCURL" ] && I_INCCURL=`prefix_I "$INCCURL"`
if test_compile "$LIBCURL $I_INCCURL" libcurl libcurl; then
if test_execute; then
cnf_append "SDK_VBOX_LIBCURL_LIBS" "`strip_l "$LIBCURL"`"
cnf_append "SDK_VBOX_LIBCURL_INCS" "$INCCURL"
fi
fi
fi
}


它直接就printf("found version %s", LIBCURL_VERSION);
而configure里面只有这一个LIBCURL_VERSION,没有看见在哪里有赋值
freetstar 2010-08-24
  • 打赏
  • 举报
回复
http://www.freetstar.com/index.php/trouble-shooting-configure-make-make-install
这个或许有帮助

另外./configure --with-libcurl=路径这样行不行,我以前编译一些软件时可以有这个选项。或者./configure --help看一下试试?

还有就是做个软链接了
Linux-Torvalds 2010-08-23
  • 打赏
  • 举报
回复
创建软连接~~
ln -s xx xx
yzx714 2010-08-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wwwunix 的回复:]

1、在configure脚本中找到检查libcurl的代码,强制修改到/sandbox下就行了。
2、同样在inttool的configure脚本中找到检查XML::Parser的地方,然后强制修改到/sandbox下。
[/Quote]+1,帮顶下
wwwunix 2010-08-23
  • 打赏
  • 举报
回复
1、在configure脚本中找到检查libcurl的代码,强制修改到/sandbox下就行了。
2、同样在inttool的configure脚本中找到检查XML::Parser的地方,然后强制修改到/sandbox下。

19,612

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧