我试图在我的x86_64 RHEL机器(CentOS 6.4)上编译带有Intel CilkPlus(v4.9)模块的GCC编译器,用于编译面向并行多核平台的应用程序 .
我正在关注GNU GCC Doc进行安装,这对于具有CilkPlus扩展的GCC非常相似 . 我特别注重提前关注前面提到的文档的Prerequisites和Configuration部分 .
1)下载
我按照Instructions page中的规定使用this snapshot下载了我需要的所有内容 . 下载也很成功,也没有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
目录中填充了目录 lib
, include
, share
和 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/
配置顺利进行并将make东西创建到我当前的文件夹中( $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 - I / 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- family / cppspec.og -g -DIN_GCC -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -pedantic -Wno-long-long - Wno-variadic-macros -Wno-overlength-strings -fno-common -DHAVE_CONFIG_H -o cpp gcc.o ggc-none.o \ c-family / 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 / -dumpspecs> tmp-specs /home/andry/b-gcc/./gcc/xgcc:错误的同时加载共享库:libiconv.so.2:无法打开共享对象文件:没有这样的文件或目录make3:* [specs]错误127 make3:离开目录/ home / andry / b-gcc / gcc'make [2]:* ** [all-stage1-gcc]错误2 make [2]:离开目录/ home / andry / b-gcc'make1:* [stage1-bubble]错误2 make1:离开目录`/ 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 ... 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:在/ home / andry / b-gcc / x86_64-unknown-linux-gnu / libgcc':configure:error:无法计算目标文件的后缀:无法编译请参阅config.log'以获取更多详细信息 . make2:* [configure-stage1-target-libgcc]错误1 make2:离开目录/ home / andry / b-gcc'make [1]:*** [stage1-bubble]错误2 make [1]:离开目录/家用/安德里/ 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加载共享库时:libmpc.so.2:无法打开共享对象文件:没有这样的文件或目录配置:3593:$? = 1 configure:失败的程序是:| / * confdefs.h * / | #define PACKAGE_NAME“GNU C运行时库”| #define PACKAGE_TARNAME“libgcc”| #define PACKAGE_VERSION“1.0”| #define PACKAGE_STRING“GNU C Runtime Library 1.0”| #define PACKAGE_BUGREPORT“”| #define PACKAGE_URL“http://www.gnu.org/software/libgcc/”| / *结束confdefs.h . * / | | int | main()| {| | ; |返回0; |配置:3607:错误:在/ home / andry / b-gcc / x86_64-unknown-linux-gnu / libgcc':configure:3610:错误:无法计算目标文件的后缀:无法编译Seeconfig.log'以获取更多详细信息 .
说错误基本上如下:
/home/andry/b-gcc/./gcc/cc1:加载共享库时出错:libmpc.so.2:无法打开共享对象文件:没有这样的文件或目录
但是我没有告诉它(在配置期间)去搜索 libmpc.so.2
进入 $HOME/cilkplus-gcc/contrib/tmp
???
我怎样才能完成任务?
我怎么能通过这个?谢谢
1 回答
**
我从http://gcc.gnu.org/git/?p=gcc.git;a=shortlog;h=refs/heads/cilkplus-4_8-branch下载了cilkplus分支的快照,然后单击签入列表顶行的快照链接 . 服务器需要一些时间来获取源并构建压缩的tarfile . 下载压缩的tarfile后,将其放入目录/ home后使用以下命令解压缩:
这将创建一个目录gcc-3cfca5e下载最新的mpfr,mpc和gmp,并将这些tar包放入gcc-3fca5e目录中 .
============在VirtualBox 4(VBox设置>系统>处理器>检查启用PAE)Windows 7专业版中运行Slackware当前核心2 duo需要大约4个小时 . 我的linux系统没有autogen,但无论如何都有效 .