我正在尝试在Windows 7 64位上编译Cygwin下的boost 1.50.0。
我运行命令:
./bootstrap.sh –prefix=boost/
我回来了:
Building Boost.Build engine with toolset gcc...
Failed to build Boost.Build build engine
Consult 'bootstrap.log' for more details
这是日志:
###
### Using 'gcc' toolset.
###
rm -rf bootstrap
mkdir bootstrap
gcc -o bootstrap/jam0 command.c compile.c constants.c debug.c function.c glob.c hash.c hdrmacro.c headers.c jam.c jambase.c jamgram.c lists.c make.c make1.c object.c option.c output.c parse.c pathunix.c regexp.c rules.c scan.c search.c subst.c timestamp.c variable.c modules.c strings.c filesys.c builtins.c pwd.c class.c native.c md5.c w32_getreg.c modules/set.c modules/path.c modules/regex.c modules/property-set.c modules/sequence.c modules/order.c execunix.c fileunix.c
function.c: In function ‘var_edit_shift’:
function.c:653:13: warning: ‘cygwin_conv_to_win32_path’ is deprecated (declared at /usr/include/sys/cygwin.h:36) [-Wdeprecated-declarations]
./bootstrap/jam0 -f build.jam --toolset=gcc --toolset-root= clean
./build.sh: line 13: 8144 Segmentation fault $@
可能是什么问题?怎么解决?
答案 0 :(得分:1)
boost
不是一个简单的构建包,还需要一些构建系统和代码补丁来构建和正常工作。 (有关详细信息,请参阅Cygwin Ports git。)我强烈建议您使用Cygwin发行版中的libboost-devel
包。
答案 1 :(得分:1)
该错误表明cygwin_conv_to_win32_path
已被弃用。
function.c:653:13:警告:'cygwin_conv_to_win32_path'已弃用 (在/usr/include/sys/cygwin.h:36中声明)[-Wdeprecated-declarations]
<强>记录:
Cygwin 1.x支持函数cygwin_conv_to_win32_path
,在2.x版本中不推荐使用。 2.x提供替换API cygwin_conv_path
如何解决? 为这些已弃用的方法添加定义,如下所示,它应该解决问题(我做了同样的事情,并且能够在cygwin上构建boost库)
void cygwin_conv_to_win32_path(const char *posix, char * win32)
{
/* Get the size */
ssize_t size = cygwin_conv_path( CCP_POSIX_TO_WIN_A, posix, NULL, 0);
cygwin_conv_path( CCP_POSIX_TO_WIN_A, posix, win32, size);
}
void cygwin_conv_to_posix_path (const char *win32, char * posix)
{
/* Get the size */
ssize_t size = cygwin_conv_path( CCP_WIN_A_TO_POSIX, win32, NULL, 0);
cygwin_conv_path( CCP_WIN_A_TO_POSIX , win32, posix, size);
}