使用Cygwin(64位)安装cmake,有问题。

时间:2022-06-12 01:56:59

When I type

当我类型

$ ./bootstrap

I have some errors:

我有一些错误:

SystemTools.o:SystemTools.cxx:(.text+0xaf2): undefined reference to `cygwin_conv _to_win32_path'
SystemTools.o:SystemTools.cxx:(.text+0xaf2): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `cygwin_conv_to_win32_path'
/usr/lib/gcc/x86_64-pc-cygwin/4.8.2/../../../../x86_64-pc-cygwin/bin/ld: SystemTools.o: bad reloc address 0x0 in section `.pdata$_ZStanSt12_Ios_IostateS_'
collect2: error: ld returned 1 exit status
Makefile:2: recipe for target 'cmake' failed
make: *** [cmake] Error 1
---------------------------------------------
Error when bootstrapping CMake:
Problem while running make
---------------------------------------------
Log of errors: /home/cmake-2.8.12/Bootstrap.cmk/cmake_bootstrap.log

2 个解决方案

#1


2  

This is a deprecated Cygwin API that was dropped in the x86_64 port. While you could fix this by using the current equivalent, I suggest a more extensive patchset found here.

这是一个废弃的Cygwin API,在x86_64端口中被删除。虽然您可以通过使用当前等效项来解决这个问题,但我建议在这里找到一个更广泛的补丁集。

#2


0  

Solved the problem. I think the issue was with some if_else conditions related to some settings for other environments like POSIX, FreeBSD. I am not an expert so by hit and trial, I commented some lines in the file LSDynaFamily.cxx.

解决了这个问题。我认为问题出在一些if_else条件上,这些条件与POSIX、FreeBSD等其他环境的一些设置有关。我不是专家,所以通过hit和trial,我在lsdynafamil .cxx文件中注释了一些行。

Line number 44:

44行号:

//return stat64(fname,&s);

Part of line number 227 onwards was modified as below:

第227号线开始部分修改如下:

//#elif USE_STAT_64
  //struct stat64 st;

Part of line number 240:
#if defined (WIN32) && VTK_SIZEOF_ID_TYPE==8
  struct __stat64 st;
//#elif USE_STAT_64
  //struct stat64 st;
#else
  struct stat st;
#endif
  while ( tryAdapt >= 0 )
    {
    tmpFile = vtkLSGetFamilyFileName( this->DatabaseDirectory.c_str(),
                                      this->DatabaseBaseName,
                                      adaptLevel,
                                      filenum );
  /*  if ( LS_DYNA_STAT( tmpFile.c_str(), st) == 0 )
      {
      if ( adapted )
        {
        this->Adaptations.push_back( (int)this->Files.size() );
        adapted = false;
        }
      this->Files.push_back( tmpFile );
      this->FileSizes.push_back( st.st_size );
      this->FileAdaptLevels.push_back( adaptLevel );
      tryAdapt = 1;
      ++filenum;
      }
    else
      {*/
      --tryAdapt;
      ++adaptLevel;
      filenum = 0;
      adapted = true;
    //  }
    }
    return this->Files.size() == 0;
  }

#1


2  

This is a deprecated Cygwin API that was dropped in the x86_64 port. While you could fix this by using the current equivalent, I suggest a more extensive patchset found here.

这是一个废弃的Cygwin API,在x86_64端口中被删除。虽然您可以通过使用当前等效项来解决这个问题,但我建议在这里找到一个更广泛的补丁集。

#2


0  

Solved the problem. I think the issue was with some if_else conditions related to some settings for other environments like POSIX, FreeBSD. I am not an expert so by hit and trial, I commented some lines in the file LSDynaFamily.cxx.

解决了这个问题。我认为问题出在一些if_else条件上,这些条件与POSIX、FreeBSD等其他环境的一些设置有关。我不是专家,所以通过hit和trial,我在lsdynafamil .cxx文件中注释了一些行。

Line number 44:

44行号:

//return stat64(fname,&s);

Part of line number 227 onwards was modified as below:

第227号线开始部分修改如下:

//#elif USE_STAT_64
  //struct stat64 st;

Part of line number 240:
#if defined (WIN32) && VTK_SIZEOF_ID_TYPE==8
  struct __stat64 st;
//#elif USE_STAT_64
  //struct stat64 st;
#else
  struct stat st;
#endif
  while ( tryAdapt >= 0 )
    {
    tmpFile = vtkLSGetFamilyFileName( this->DatabaseDirectory.c_str(),
                                      this->DatabaseBaseName,
                                      adaptLevel,
                                      filenum );
  /*  if ( LS_DYNA_STAT( tmpFile.c_str(), st) == 0 )
      {
      if ( adapted )
        {
        this->Adaptations.push_back( (int)this->Files.size() );
        adapted = false;
        }
      this->Files.push_back( tmpFile );
      this->FileSizes.push_back( st.st_size );
      this->FileAdaptLevels.push_back( adaptLevel );
      tryAdapt = 1;
      ++filenum;
      }
    else
      {*/
      --tryAdapt;
      ++adaptLevel;
      filenum = 0;
      adapted = true;
    //  }
    }
    return this->Files.size() == 0;
  }