0

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

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

1) 下载

我确实按照说明页面中的说明使用此快照下载了我需要的所有内容。下载成功,也解压了。我确实将文件夹重命名为并将其放在我的目录下。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目录中充满了目录lib、、includeshare里面bin的这三个库。

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/

配置进行得很顺利,并在我当前的文件夹 ( $HOME/b-gcc) 中创建了一些东西。制作时间和我发出:sudo make

两分钟,我得到这个错误

g++ -c -g -DIN_GCC -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wwrite-strings -Wcast-qual -fno-common -DHAVE_CONFIG_H -I。-Ic-family -I/home/andry/cilkplus-gcc/gcc -I/home/andry/cilkplus-gcc/gcc/c-family -I/home/andry/cilkplus-gcc/gcc/../include -我/home/andry/cilkplus-gcc/gcc/../libcpp/include -I/home/andry/cilkplus-gcc/contrib/tmp//include -I/home/andry/cilkplus-gcc/contrib/tmp/ /include -I/home/andry/cilkplus-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 -o c-家庭/cppspec。3* [规格] 错误 127 make 3:离开目录 /home/andry/b-gcc/gcc' make[2]: *** [all-stage1-gcc] Error 2 make[2]: Leaving directory/home/andry/b-gcc' make 1:* [stage1-bubble] 错误 2 make 1:离开目录 `/home/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... 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-install/x86_64-unknown-linux-gnu/lib/ -isystem /home/andry/cilkplus-install/x86_64-unknown-linux- gnu/include -isystem /home/andry/cilkplus-install/x86_64-unknown-linux-gnu/sys-include
检查目标文件的后缀... configure: error: in /home/andry/b-gcc/x86_64-unknown-linux-gnu/libgcc': configure: error: cannot compute suffix of object files: cannot compile See config.log' 了解更多详情。制作2: * [configure-stage1-target-libgcc] 错误 1 ​​make 2 : 离开目录 /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: error while加载共享库:libmpc.so.2:无法打开共享对象文件:没有这样的文件或目录配置:3593:$?= 1 配置:失败的程序是:| /* confdefs.h */ | #define PACKAGE_NAME "GNU C 运行时库" | #define PACKAGE_TARNAME "libgcc" | #define PACKAGE_VERSION "1.0" | #define PACKAGE_STRING "GNU C 运行时库 1.0" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL " http://www.gnu.org/software/libgcc/ " | /* 结束 confdefs.h。*/ | | 整数 | 主要 () | { | | ; | 返回0;| } 配置:3607:错误:在 /home/andry/b-gcc/x86_64-unknown-linux-gnu/libgcc': configure:3610: error: cannot compute suffix of object files: cannot compile Seeconfig.log' 以获取更多详细信息。

说错误基本如下:

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

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

我怎样才能把事情做好?

我怎样才能度过这个难关?谢谢

4

1 回答 1

0

**

我从http://gcc.gnu.org/git/?p=gcc.git;a=shortlog;h=refs/heads/cilkplus-4_8-branch下载了 cilkplus 分支的快照,然后单击快照链接签到列表的第一行。服务器将需要一些时间来获取源并构建压缩的 tar 文件。下载压缩的 tar 文件后,将其放入目录 /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(VBox 设置>系统>处理器>检查启用 PAE)Windows 7 专业版中运行 Slackware current 的 core 2 duo 花了大约 4 个小时。我的 linux 系统没有自动生成器,但它仍然可以工作。

于 2013-10-15T00:15:06.440 回答