编译GCC CilkPlus 4.9时出现问题



我正试图在x86_64 RHEL计算机(CentOS 6.4)上编译带有Intel CilkPlus(v4.9)模块的GCC编译器,用于编译针对并行多核平台的应用程序。

我遵循GNU GCC文档进行安装,这与带有CilkPlus扩展的GCC非常相似。我特别关注前面提到的文档中的先决条件和配置部分。

1) 下载

我确实按照说明页面中的指定使用此快照下载了我需要的所有内容。下载成功,也取消了tar。我确实将文件夹重命名为cilkplus-gcc,并将其放在我的$HOME目录下。

我还创建了另一个目录:$HOME/b-gcc,我打算在其中运行configure命令,然后运行make命令。这将防止安装到同一目录中(这是该过程不希望的,因为它鼓励在不同的目录上构建所有内容)。

2) 初始配置

如文档中所述,我进入了$HOME/cilkplus-gcc/contrib目录,以便构建安装过程(即:编译GCC)所需的三个最重要的库:

  • GMP:位于$HOME/cilkplus-gcc/contrib/gmp-4.3.2目录中
  • MPFR:位于$HOME/cilkplus-gcc/contrib/mpfr-2.4.2目录中
  • MPC:位于$HOME/cilkplus-gcc/contrib/mpc-0.8.1目录中

我按照出现的顺序构建它们,因为MPFR取决于GMP,MPC同时取决于GMP和MPFR。我想把所有需要的文件都放在$HOME/cilkplus-gcc目录中,所以我指示这些库的安装程序把所有文件都放到$HOME/cilkplus-gcc/contrib/tmp目录中。因此:

sudo $HOME/cilkplus-gcc/contrib/gmp-4.3.2/configure --enable-shared --enable-static --prefix=$HOME/cilkplus-gcc/contrib/tmp
sudo $HOME/cilkplus-gcc/contrib/mpfr-2.4.2/configure --enable-shared --enable-static --prefix=$HOME/cilkplus-gcc/contrib/tmp --with-gmp=$HOME/cilkplus-gcc/contrib/tmp
sudo $HOME/cilkplus-gcc/contrib/mpc-0.8.1/configure --enable-shared --enable-static --prefix=$HOME/cilkplus-gcc/contrib/tmp --with-gmp=$HOME/cilkplus-gcc/contrib/tmp --with-mpfr=$HOME/cilkplus-gcc/contrib/tmp

直接的结果是,我的$HOME/cilkplus-gcc/contrib/tmp目录中充满了目录libincludesharebin,其中包含这三个库。

3) 安装

是时候忙于编译所有内容了。我进入$HOME/b-gcc目录,然后从那里发出以下命令:

sudo $HOME/cilkplus-gcc/configure --prefix=$HOME/cilkplus-install --enable-languages="c,c++" --with-gmp=$HOME/cilkplus-gcc/contrib/tmp/ --with-mpfr=$HOME/cilkplus-gcc/contrib/tmp/ --with-mpc=$HOME/cilkplus-gcc/contrib/tmp/

配置进行得很顺利,并将make内容创建到我当前的文件夹($HOME/b-gcc)中。是时候制作和发布了:sudo make

两分钟后我收到这个错误

g++-c-g-DIN_GCC-fno异常-fno rtti-fasynchronous展开表-W-Wall-Wwrite字符串-Wcast qual-fno common-DHAVE_CONFIG_H-I-Ic家族-I/home/andry/cilkplus-gcc/gcc-I/home-andry/cilklus-gcc/gcc/c-famine-I/home·安dry/cickplus-gcc/gcc//include-I/home/andry/cilkplus-gcc/gcc//libcpp/include-I/home/andry/cilkplus gcc/contrib/tmp//include-I-home/andry/cilkplus gcc/contirb/tmp//include-I/home/andry/cilklus gcc/contrib/tmp//include-I/home/andry/cilkplus-gcc/gcc//libdecnumber-I/home/andry/cilkplus-gcc/gcc//libdecnumber/bid-I/libdecnumber-I/home/andry/cilkplus-gcc/gcc//libbacktrace/home/andry/cilkplus gcc/gcc/c-family/cppspec.c-oc-family/cppspec.o g++-g-DIN_GCC-fno异常-fno rtti-fasynchronous展开表-W-Wall-Wwrite字符串-Wcast qual-Wmissing格式属性-pedantic-Wno long-Wno可变宏-Wno超长字符串-fno common-DHAVE_CONFIG_H-o cpp gcc.o ggc none.o\c-ffamily/cppspec.o driver-i386.o libcommon target.a\libcommon.a../libcpp/libcpp.a-liconv/libbacktrace/.libs/libbacktrace.a../libiberty/libiberty.a../libdecnumber/libdecnumber.a/home/andry/b-gcc//gcc/xgcc-B/home/andry/B-gcc//gcc/-dumpsecs>tmp-species/home/andry/b-gcc//gcc/xgcc:加载共享库时出错:libiconv.so.2:无法打开共享对象文件:没有这样的文件或directory make3:*[specs]错误127 make3:正在离开目录/home/andry/b-gcc/gcc' make[2]: *** [all-stage1-gcc] Error 2 make[2]: Leaving directory/home/andry/b-gcc'make1:*[sstage1 bubble]错误2 make1:正在离开目录`/主页/andry/b-gcc'

但我检查了我的/usr/local/lib文件夹,我可以清楚地看到libiconv.so.2在那里!因此,我理解安装过程(即GCC编译本身)找不到库(我可以清楚地看到-liconv标志)。所以我删除了$HOME/b-gcc中的所有内容,并发布了一个修改后的configure命令:

sudo $HOME/cilkplus-gcc/configure --prefix=$HOME/cilkplus-install --enable-languages="c,c++" --with-gmp=$HOME/cilkplus-gcc/contrib/tmp/ --with-mpfr=$HOME/cilkplus-gcc/contrib/tmp/ --with-mpc=$HOME/cilkplus-gcc/contrib/tmp/ --with-stage1-ldflags=-L/usr/local/lib

当我再次发出sudo make时,不再遇到以前的错误,时间也就过去了。5/6分钟后,我得到这个错误:

正在检查x86_64-unknown-linux-gnu-ar。。。ar检查x86_64-unknown-linux-gnu-lipo。。。脂检查x86_64-unknown-linux-gnu-nm/home/andry/b-gcc//gcc/nm检查对于x86_64-unknown-linux-gnu-ranlib。。。ranlib检查x86_64-unknown-linux-gnu-strip。。。条带检查是否为ln-s作品是,正在检查x86_64-unknown-linux-gnu-gcc。。。/home/andry/b-gcc//gcc/xgcc-B/home/andry/B-gcc//gcc/-B/home/andry/cilkplus-install/x86_64-unknown-linux-gnu/bin/-B/home/andry/cilkplus-ininstall/x86_64-unknown-linux-gnu/lib/-isystem/home/aandry/cilklus-install/x66_64-ununknown-linux-gnu/include-isystem/home/andry/cilkplus-install/x86_64-unknown-linux-gnu/sys include
正在检查对象文件的后缀。。。配置:错误:在有关更多详细信息,请参阅/home/andry/b-gcc/x86_64-unknown-linux-gnu/libgcc': configure: error: cannot compute suffix of object files: cannot compile See 配置日志。make2:*[configure-stage1-target-libgcc]错误1 make2:正在离开目录/home/andry/b-gcc' make[1]: *** [stage1-bubble] Error 2 make[1]: Leaving directory/home/andry/b-gcc'

嗯,这是一件很奇怪的事情。。。所以我检查了$HOME/b-gcc/x86_64-unknown-linux-gnu/libgcc/config.log(将显示相关摘录):

-isystem/home/andry/cilkplus-install/x86_64-unknown-linux-gnu/sys include
-c-g-O2-conftest.c>&5/home/andry/b-gcc//gcc/cc1:加载共享库时出错:libmpc.so.2:无法打开共享对象文件:没有配置这样的文件或目录:3593:$?=1配置:失败程序是:|/*confdefs.h*/|#define PACKAGE_NAME"GNU C RuntimeLibrary"|#define PACKAGE_TARNAME"libgcc"|#fine PACKAGE_VERSION"1.0"|#define PACKAGE_STRING"GNU C运行库1.0"|#definePACKAGE_BUGREPORT"|#define PACKAGE_URL"http://www.gnu.org/software/libgcc/"|/*结束confdefs.h.*/||int|main()|{||;| return 0;|}配置:3607:错误:在有关更多详细信息,请参阅"/home/andry/b-gcc/x86_64-unknown-linux-gnu/libgcc': configure:3610: error: cannot compute suffix of object files: cannot compile See配置日志"。

说错误基本上如下:

/home/andry/b-gcc//gcc/cc1:加载共享库时出错:libmpc.so.2:无法打开共享对象文件:没有这样的文件或目录

但我不是已经告诉它(在配置期间)去搜索libmpc.so.2$HOME/cilkplus-gcc/contrib/tmp吗???

我怎样才能完成任务?

我该如何度过难关?谢谢

**

我从下载了cilkplus分支的快照http://gcc.gnu.org/git/?p=gcc.git;a=短对数;h=refs/heads/cilkplus-4_8-分支,然后单击签入列表顶行的快照链接。服务器将需要一些时间来获取源代码并构建一个压缩的tarfile。下载压缩的tarfile后,将其放入目录/home后,使用以下命令对其进行解压缩:

cd /home
tar -xf gcc-3cfca5e.tar.gz

这将创建一个目录gcc-3cfca5e下载最新的mpfr、mpc和gmp,并将这些tarball放入gcc-3fca5e目录中。

cd /home/gcc-3cfca5e
tar -jxvf mpfr-3.1.2.tar.bz2
tar -xzvf mpc-1.0.1.tar.gz
tar -vxjf gmp-5.1.3.tar.bz2
ln -sf mpfr-3.1.2  mpfr
ln -sf mpc-1.0.1 mpc
ln -sf gmp-5.1.3  gmp
cd /home
mkdir gcc-cilk-obj
mkdir gcc-cilk
cd /home/gcc-cilk-obj
../gcc-3cfca5e/configure  --prefix=/home/gcc-cilk  --disable-multilib  -enable-languages=c
make
make install

============在VirtualBox 4中运行Slackware电流的核心2二人组上,花了大约4个小时制作(VBox设置>系统>处理器>检查启用PAE)Windows 7专业版。我的linux系统没有autogen,但它仍然可以工作。

相关内容

  • 没有找到相关文章

最新更新