【问题标题】:Unable to compile xps after installing ROOT, missing libraries安装ROOT后无法编译xps,缺少库
【发布时间】:2015-04-03 20:03:30
【问题描述】:

我正在尝试在 R 中安装 xps,并已从 CERN 安装了ROOT

在编译期间我得到:

TMLMath.cxx:51:19: 致命错误: TMath.h: 没有这样的文件或目录

 #include "TMath.h"
                   ^
编译终止。
make: *** [TMLMath.o] 错误 1
错误:包“xps”的编译失败

我尝试手动添加这个文件,然后需要另一个,然后另一个,...直到错误不仅仅是缺少文件,而是重新定义了东西(请参阅notes here),然后再次编译失败。

我的 ROOT 详细信息是:

版本 5.34/14 2013 年 12 月 16 日 ROOT 5.34/14 (heads/v5-34-00-patches@v5-34-13-131-gd110ad3, Jan 07 2014, 00:12:00 on linuxx8664gcc) CINT/ROOT C/C++ 解释器版本 5.18.00,2010 年 7 月 2 日 根在哪里 根目录:/usr/bin/root /usr/bin/root.exe /etc/root /usr/bin/X11/root /usr/bin/X11/root.exe /usr/include/root /usr/share/root /usr/share/man/man1/root.1.gz

我尝试在新下载的root 版本上make uninstall,但令人担忧的是它什么也没做(我删除了我最初make'd 的文件夹)

我猜我所拥有的 ROOT 版本可能缺少其中一些,因为 xps 依赖于旧版本的 ROOT?然而,手册显示了一个最近的日期,所以它不像是被忽视的软件(如果我理解正确的话)......

ROOT 安装正常,all prerequisites I could find 已安装:

sudo apt-get install build-essential dpkg-dev make g++ gcc binutils libx11-dev libxpm-dev libxft-dev libxext-dev gfortran libssl-dev libpcre3-dev libglu1-mesa-dev libglew-dev libftgl-dev libmysqlclient- dev libfftw3-dev libcfitsio3-dev graphviz-dev libavahi-compat-libdnssd-dev libldap2-dev python-dev libxml2-dev libkrb5-dev libgsl0-dev libqt4-dev xfs xfstt t1-xfree86-nonfree ttf-xfree86-nonfree ttf-xfree86 -nonfree-syriac xfonts-75dpi xfonts-100dpi

任何帮助都将不胜感激,如果我应该提供有关我的系统的更多详细信息,请告诉我。

Bioconductor 安装的完整输出:

> biocLite('xps')
BioC_mirror:http://bioconductor.org
使用 Bioconductor 3.0 版(BiocInstaller 1.16.1),R 3.1.2 版。
安装包'xps'
尝试 URL 'http://bioconductor.org/packages/3.0/bioc/src/contrib/xps_1.26.0.tar.gz'
内容类型 'application/x-gzip' 长度 6669399 字节 (6.4 Mb)
打开网址
====================================================
下载 6.4 Mb

* 安装 *source* 包 ‘xps’ ...
检查 gcc... gcc -std=gnu99
检查 C 编译器默认输出文件名... a.out
检查 C 编译器是否工作......是的
检查我们是否在交叉编译...否
检查可执行文件的后缀...
检查目标文件的后缀... o
检查我们是否正在使用 GNU C 编译器...是的
检查 gcc -std=gnu99 是否接受 -g... 是
检查 gcc -std=gnu99 选项以接受 ANSI C...不需要
检查如何运行 C 预处理器... gcc -std=gnu99 -E
检查 gcc...(缓存) gcc -std=gnu99
检查我们是否正在使用 GNU C 编译器...(缓存)是
检查 gcc -std=gnu99 是否接受 -g...(缓存)是
检查 gcc -std=gnu99 选项以接受 ANSI C...(缓存)不需要
在目录 /usr 中找到 ROOT 版本 5.34/14
** 库
** 拱门 -
g++ -I/usr//include -O2 -Wall -fPIC -pthread -m64 -I/usr/include/root -c TMLMath.cxx
TMLMath.cxx:51:19:致命错误:TMath.h:没有这样的文件或目录
 #include "TMath.h"
                   ^
编译终止。
make: *** [TMLMath.o] 错误 1
错误:包“xps”的编译失败
* 删除‘/home/louis/R/x86_64-pc-linux-gnu-library/3.1/xps’

下载的源码包在
    '/tmp/RtmpZVOLbW/downloaded_pa​​ckages'
警告信息:
在 install.packages(pkgs = pkgs, lib = lib, repos = repos, ...) :
  软件包“xps”的安装具有非零退出状态

编辑:我在运行 R 之前关注了 ROOTSYS 变量的变化:

导出 ROOTSYS=/usr/ 导出“PATH=$ROOTSYS/bin:$PATH”

我最初使用的是ROOTSYS=/usr/include/root,这是我找到带有whereis root 的程序的地方。然而,这会产生一个不同的错误 - /usr/bin/root/include not a directory。因此使用ROOTSYS=/usr ...

> 来源(“http://bioconductor.org/biocLite.R”) Bioconductor 版本 3.0 (BiocInstaller 1.16.1), ?biocLite 寻求帮助 > biocLite('xps') BioC_mirror:http://bioconductor.org 使用 Bioconductor 3.0 版(BiocInstaller 1.16.1),R 3.1.2 版。 安装包'xps' 尝试 URL 'http://bioconductor.org/packages/3.0/bioc/src/contrib/xps_1.26.0.tar.gz' 内容类型 'application/x-gzip' 长度 6669399 字节 (6.4 Mb) 打开网址 ==================================================== 下载 6.4 Mb * 安装 *source* 包 ‘xps’ ... 检查 gcc... gcc -std=gnu99 检查 C 编译器默认输出文件名... a.out 检查 C 编译器是否工作......是的 检查我们是否在交叉编译...否 检查可执行文件的后缀... 检查目标文件的后缀... o 检查我们是否正在使用 GNU C 编译器...是的 检查 gcc -std=gnu99 是否接受 -g... 是 检查 gcc -std=gnu99 选项以接受 ANSI C...不需要 检查如何运行 C 预处理器... gcc -std=gnu99 -E 检查 gcc...(缓存) gcc -std=gnu99 检查我们是否正在使用 GNU C 编译器...(缓存)是 检查 gcc -std=gnu99 是否接受 -g...(缓存)是 检查 gcc -std=gnu99 选项以接受 ANSI C...(缓存)不需要 在目录 /usr 中找到 ROOT 版本 5.34/14 ** 库 ** 拱门 - g++ -I/usr/bin/root/include -O2 -Wall -fPIC -pthread -m64 -I/usr/include/root -c TMLMath.cxx cc1plus:错误:/usr/bin/root/include:不是目录 make: *** [TMLMath.o] 错误 1 错误:包“xps”的编译失败 * 删除‘/home/louis/R/x86_64-pc-linux-gnu-library/3.1/xps’ 下载的源码包在 '/tmp/Rtmpc9EO9W/downloaded_pa​​ckages' 警告信息: 1:在 install.packages(pkgs = pkgs, lib = lib, repos = repos, ...) 中: 软件包“xps”的安装具有非零退出状态 2:安装目录不可写,无法更新包'maptools'

【问题讨论】:

  • 你关注these instructions了吗,尤其是shell变量ROOTSYS
  • 啊,嗯,是的,它们的工作并不奇怪,请查看我刚刚所做的编辑 - 在那种情况下它根本找不到目录,因此我只是将 ROOTSYS 设置为 @ 987654335@ ...我不认为我在安装 ROOT 本身之前设置了这些(这似乎确实有效)
  • 错误信息是/usr/bin/root/include: Not a directory,意思是编译器试图进入这个不存在的目录。例如,locate TMLMath.h 或类似命令的输出是什么?
  • locate TMLMath.h 什么也不返回,locate TMath.h 提供我的下载文件夹...~/Downloads/root-6.02.04/include/TMath.h ~/Downloads/root-6.02.04/math/mathcore/inc/TMath.h
  • ROOT 看起来没有正确安装。

标签: c++ r gcc g++ bioconductor


【解决方案1】:

正如上面的 cmets 中所指出的,ROOT 没有正确安装 - 我刚刚与有同样问题的人联系,认为它没有解决(我在解决方案 here 上留下了笔记,而不是在这个问题上)。我知道这样。政策是包含修复而不是链接,所以我将它粘贴在以下部分分隔符下方。我猜我会说使用 v5.34.24 而不是生产的建议仍然适用(也许它会在某处指定,或者有人可以再次联系维护者)。 [我删除了关于手动修复无效的部分]


先决条件

(通过Elena Graverini's blog

先决条件:

sudo apt-get install build-essential git subversion dpkg-dev make g++ gcc binutils libx11-dev libxpm-dev libxft-dev libxext-dev

可选(推荐)先决条件:

sudo apt-get install gfortran libssl-dev libpcre3-dev libglu1-mesa-dev libglew-dev libftgl-dev libmysqlclient-dev libfftw3-dev libcfitsio3-dev graphviz-dev libavahi-compat-libdnssd-dev libldap2-dev python-dev libxml2-dev libkrb5-dev libgsl0-dev libqt4-dev

为ROOT安装字体服务器和字体:

sudo apt-get install xfs xfstt sudo apt-get install t1-xfree86-nonfree ttf-xfree86-nonfree ttf-xfree86-nonfree-syriac xfonts-75dpi xfonts-100dpi

安装

gzip -dc root_v5.34.24.source.tar.gz |焦油 -xf - MV根~ cd ~/根 ./configure --all 使-j N

其中 N 是您机器上的 CPU 内核数 (cat /proc/cpuinfo | grep 'cpu cores')

  • 对于 Ubuntu 14.04 运行: sudo mkdir /usr/include/freetype && sudo cp /usr/include/freetype2/freetype.h /usr/include/freetype/freetype.h
    • 如果你要卸载,别忘了把它也拿出来

删除 Ubuntu 的 ROOT 版本可解决 make 中的 ld 错误

sudo apt-get purge root-system root-system-bin root-system-common export ROOTSYS=/home/louis/root

使用配置重新运行 make 为 ./configure --prefix=/home/louis/ 有效

  • 我认为前缀标志相当于在make之前设置ROOTSYS变量(我使用了多个指南,忘记设置它,但无论如何它都有效)
  • CERN ROOT installation from source page 指出 make install 是“NOOP”...但除非您在 make 之后运行它,否则不会安装它,所以无论如何都要这样做

最后一步是将 $ROOTSYS/bin 添加到 PATH - 将 source ~/bin/thisroot.sh 添加到您的 ~/.bashrc(假设您的 .bashrc 已经在新终端中获取)

  • 对我来说,ROOTSYS 现在设置在 shell 中。 The xps README 建议您设置它,但 PATH 不是,所以我继续将以下内容添加到我的 .bashrc:
导出 PATH=$ROOTSYS/bin:$PATH 导出 LD_LIBRARY_PATH=$ROOTSYS/lib:$LD_LIBRARY_PATH

ROOT 现在应该可以运行了,并且能够编译xps...

  • 出于某种原因,LD_LIBRARY_PATH 没有设置,但 PATH 设置了...? .bashrc 否则一切都按预期工作
cd $ROOTSYS/tutorials`
根
根 [0] .x 演示.C

如果没有出现错误,ROOT 正在工作。

安装xps

我预计 biocLite('xps') 会失败,因为二进制文件是使用 ROOT v.5.34.05 创建的...但是维护者推荐 v5.34.24,所以还是尝试一下吧:

来源(“http://bioconductor.org/biocLite.R”) biocLite(“xps”)

它有效:-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-17
    • 2015-11-06
    • 2015-06-28
    • 2018-02-28
    相关资源
    最近更新 更多