在 RHEL 上编译图形工具
Compiling graph-tool on RHEL
我需要在 RHEL6 服务器上使用 Python 的图形工具。
系统管理员无法从他信任的存储库(或其他)安装 boost 库,因此已将其安装在
/usr/local/boost_1_59_0/
里面有两个目录,boost/ 和 libs/,我将其作为 header 和 libs 目录。
我下载了源码:
wget http://downloads.skewed.de/graph-tool/graph-tool-2.2.44.tar.bz2
打开包装后,我尝试了:
env CPPFLAGS='-I/home/foo/sw/include' LDFLAGS='-L/home/foo/sw/lib/' ./configure
但这并没有给出与“./configure”本身不同的结果。
它说:
checking for boostlib >= 1.53.0... configure: error: We could not
detect the boost libraries (version 1.53 or higher). If you have a
staged boost library (still not installed) please specify $BOOST_ROOT
in your environment and do not give a PATH to --with-boost option. If
you are sure you have boost installed, then check your version number
looking in . See http://randspringer.de/boost for
more documentation.
我也试过:
\env BOOST_ROOT='/usr/local/boost_1_59_0' CPPFLAGS='-I/usr/local/boost_1_59_0/boost' LDFLAGS='-L/usr/local/boost_1_59_0/libs/'
./configure
但结果是一样的。
我也试过:
./configure --with-boost-libdir=/usr/local/boost_1_59_0/libs/ --with-boost=/usr/local/boost_1_59_0
我显然不知道自己在做什么。
这足以看出我做错了什么吗?
更新:
gcc 版本:
海湾合作委员会 (海湾合作委员会) 4.4.7 20120313 (红帽 4.4.7-11)
从图形工具的失败配置中查看 config.log,我在最后发现以下内容:
configure:17873: g++ -c -Wall -Wextra -ftemplate-backtrace-limit=0 -DNDEBUG -std=gnu++0x -ftemplate-depth-250 -Wno-deprecated -Wno-unknown-pragmas -O3 -fvisibility=default -fvisibility-inlines-hidden -Wno-unknown-pragmas -I/usr/include/python2.6 conftest.cpp >&5
cc1plus: error: unrecognized command line option "-ftemplate-backtrace-limit=0"
configure:17873: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "graph-tool"
| #define PACKAGE_TARNAME "graph-tool"
| #define PACKAGE_VERSION "2.2.44"
| #define PACKAGE_STRING "graph-tool 2.2.44"
| #define PACKAGE_BUGREPORT "http://graph-tool.skewed.de/tickets"
| #define PACKAGE_URL "http://graph-tool.skewed.de"
| #define PACKAGE "graph-tool"
| #define VERSION "2.2.44"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define HAVE_PYTHON "2.6"
| /* end confdefs.h. */
|
| #include <boost/version.hpp>
|
| int
| main ()
| {
|
| #if BOOST_VERSION >= 105300
| // Everything is okay
| #else
| # error Boost version is too old
| #endif
|
| ;
| return 0;
| }
configure:17972: g++ -c -Wall -Wextra -ftemplate-backtrace-limit=0 -DNDEBUG -std=gnu++0x -ftemplate-depth-250 -Wno-deprecated -Wno-unknown-pragmas -O3 -fvisibility=default -fvisibility-inlines-hidden -Wno-unknown-pragmas -I/usr/include/python2.6 -I/include/boost-0 conftest.cpp >&5
cc1plus: error: unrecognized command line option "-ftemplate-backtrace-limit=0"
configure:17972: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "graph-tool"
| #define PACKAGE_TARNAME "graph-tool"
| #define PACKAGE_VERSION "2.2.44"
| #define PACKAGE_STRING "graph-tool 2.2.44"
| #define PACKAGE_BUGREPORT "http://graph-tool.skewed.de/tickets"
| #define PACKAGE_URL "http://graph-tool.skewed.de"
| #define PACKAGE "graph-tool"
| #define VERSION "2.2.44"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define HAVE_PYTHON "2.6"
| /* end confdefs.h. */
|
| #include <boost/version.hpp>
|
| int
| main ()
| {
|
| #if BOOST_VERSION >= 105300
| // Everything is okay
| #else
| # error Boost version is too old
| #endif
|
| ;
| return 0;
| }
configure:17991: error: We could not detect the boost libraries (version 1.53 or higher). If you have a staged boost library (still not installed) please specify $BOOST_ROOT in your environment and do not give a PATH to --with-boost option. If you are sure you have boost installed, then check your version number looking in <boost/version.hpp>. See http://randspringer.de/boost for more documentation.
如网站所述(https://graph-tool.skewed.de/download),您需要GCC 4.8 或更高版本才能编译graph-tool,因为它是用C++11 编写的。不支持 GCC 4.4。
我需要在 RHEL6 服务器上使用 Python 的图形工具。 系统管理员无法从他信任的存储库(或其他)安装 boost 库,因此已将其安装在
/usr/local/boost_1_59_0/
里面有两个目录,boost/ 和 libs/,我将其作为 header 和 libs 目录。
我下载了源码:
wget http://downloads.skewed.de/graph-tool/graph-tool-2.2.44.tar.bz2
打开包装后,我尝试了:
env CPPFLAGS='-I/home/foo/sw/include' LDFLAGS='-L/home/foo/sw/lib/' ./configure
但这并没有给出与“./configure”本身不同的结果。 它说:
checking for boostlib >= 1.53.0... configure: error: We could not detect the boost libraries (version 1.53 or higher). If you have a staged boost library (still not installed) please specify $BOOST_ROOT in your environment and do not give a PATH to --with-boost option. If you are sure you have boost installed, then check your version number looking in . See http://randspringer.de/boost for more documentation.
我也试过:
\env BOOST_ROOT='/usr/local/boost_1_59_0' CPPFLAGS='-I/usr/local/boost_1_59_0/boost' LDFLAGS='-L/usr/local/boost_1_59_0/libs/'
./configure
但结果是一样的。
我也试过:
./configure --with-boost-libdir=/usr/local/boost_1_59_0/libs/ --with-boost=/usr/local/boost_1_59_0
我显然不知道自己在做什么。 这足以看出我做错了什么吗?
更新:
gcc 版本:
海湾合作委员会 (海湾合作委员会) 4.4.7 20120313 (红帽 4.4.7-11)
从图形工具的失败配置中查看 config.log,我在最后发现以下内容:
configure:17873: g++ -c -Wall -Wextra -ftemplate-backtrace-limit=0 -DNDEBUG -std=gnu++0x -ftemplate-depth-250 -Wno-deprecated -Wno-unknown-pragmas -O3 -fvisibility=default -fvisibility-inlines-hidden -Wno-unknown-pragmas -I/usr/include/python2.6 conftest.cpp >&5
cc1plus: error: unrecognized command line option "-ftemplate-backtrace-limit=0"
configure:17873: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "graph-tool"
| #define PACKAGE_TARNAME "graph-tool"
| #define PACKAGE_VERSION "2.2.44"
| #define PACKAGE_STRING "graph-tool 2.2.44"
| #define PACKAGE_BUGREPORT "http://graph-tool.skewed.de/tickets"
| #define PACKAGE_URL "http://graph-tool.skewed.de"
| #define PACKAGE "graph-tool"
| #define VERSION "2.2.44"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define HAVE_PYTHON "2.6"
| /* end confdefs.h. */
|
| #include <boost/version.hpp>
|
| int
| main ()
| {
|
| #if BOOST_VERSION >= 105300
| // Everything is okay
| #else
| # error Boost version is too old
| #endif
|
| ;
| return 0;
| }
configure:17972: g++ -c -Wall -Wextra -ftemplate-backtrace-limit=0 -DNDEBUG -std=gnu++0x -ftemplate-depth-250 -Wno-deprecated -Wno-unknown-pragmas -O3 -fvisibility=default -fvisibility-inlines-hidden -Wno-unknown-pragmas -I/usr/include/python2.6 -I/include/boost-0 conftest.cpp >&5
cc1plus: error: unrecognized command line option "-ftemplate-backtrace-limit=0"
configure:17972: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "graph-tool"
| #define PACKAGE_TARNAME "graph-tool"
| #define PACKAGE_VERSION "2.2.44"
| #define PACKAGE_STRING "graph-tool 2.2.44"
| #define PACKAGE_BUGREPORT "http://graph-tool.skewed.de/tickets"
| #define PACKAGE_URL "http://graph-tool.skewed.de"
| #define PACKAGE "graph-tool"
| #define VERSION "2.2.44"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define STDC_HEADERS 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define HAVE_PYTHON "2.6"
| /* end confdefs.h. */
|
| #include <boost/version.hpp>
|
| int
| main ()
| {
|
| #if BOOST_VERSION >= 105300
| // Everything is okay
| #else
| # error Boost version is too old
| #endif
|
| ;
| return 0;
| }
configure:17991: error: We could not detect the boost libraries (version 1.53 or higher). If you have a staged boost library (still not installed) please specify $BOOST_ROOT in your environment and do not give a PATH to --with-boost option. If you are sure you have boost installed, then check your version number looking in <boost/version.hpp>. See http://randspringer.de/boost for more documentation.
如网站所述(https://graph-tool.skewed.de/download),您需要GCC 4.8 或更高版本才能编译graph-tool,因为它是用C++11 编写的。不支持 GCC 4.4。