我正在尝试在我的 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
、、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/
配置进行得很顺利,并在我当前的文件夹 ( $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 See
config.log' 以获取更多详细信息。
说错误基本如下:
/home/andry/b-gcc/./gcc/cc1:加载共享库时出错:libmpc.so.2:无法打开共享对象文件:没有这样的文件或目录
libmpc.so.2
但是我不是已经告诉它(在配置期间)去搜索$HOME/cilkplus-gcc/contrib/tmp
???
我怎样才能把事情做好?
我怎样才能度过这个难关?谢谢