Cygwin: Seismic Unix 설치 - make install 중 오류 발생

Cygwin: Seismic Unix 설치 - make install 중 오류 발생

Windows에 Cygwin용 소프트웨어 "Seismic Unix"를 설치하려고 합니다.

일반적인 상황에서 아래 설명된 문제는 Cygwin을 다시 다운로드하고 모든 패키지를 다시 설치하면 해결될 수 있습니다. 문제는 다음과 같습니다. 저는 현재 남대서양에서 50명의 연구 선박을 타고 있기 때문에 그렇게 할 수 없습니다. 공유 190 kb/s 대역폭. 그래서 제가 할 수 있는 최선은 개별 패키지를 다운로드하거나 업데이트하는 것입니다. 하지만 이렇게 하려면 먼저 오류 메시지의 원인이 무엇인지 알아야 합니다.

설치하려고 할 때 문제가 발생합니다. 오류 메시지는 다음과 같습니다.

fcat.c: In function ‘main’:
fcat.c:35:14: error: storage size of ‘buf’ isn’t known
  struct stat buf;
              ^~~
In file included from fcat.c:26:0:
/usr/local/su2/include/cwp.h:713:15: warning: implicit declaration of function  open64’ [-Wimplicit-function-declaration]
 #define open  open64
               ^
fcat.c:43:8: note: in expansion of macro ‘open’
   fd = open(av[ic], O_RDONLY);
        ^~~~
/usr/local/su2/include/cwp.h:720:15: warning: implicit declaration of function  fstat64’ [-Wimplicit-function-declaration]
 #define fstat fstat64
               ^
fcat.c:45:3: note: in expansion of macro ‘fstat’
   fstat(fd, &buf);
   ^~~~~
fcat.c:35:14: warning: unused variable ‘buf’ [-Wunused-variable]
  struct stat buf;
              ^~~
make[2]: *** [Makefile:24: /usr/local/su2/bin/fcat] Error 1
make[2]: Leaving directory '/usr/local/su2/src/cwp/main'
make[1]: *** [Makefile:8: INSTALL] Error 2
make[1]: Leaving directory '/usr/local/su2/src/cwp'
make: *** [Makefile:85: cwpstuff] Error 2

/usr/local/su2/는 Seismic Unix의 디렉터리입니다. 비슷한 것(마다가스카르라고 함)에서 작동하는 많은 패키지를 설치했지만 Seismic Unix에서는 작동하지 않는 것 같습니다. gcc를 찾을 수 없거나 최신 버전이 아닐 때 이 오류 메시지가 가끔 발생한다고 설명하는 게시물을 발견했습니다. 여러번 확인했는데 최신이네요. 또한 Cygwin의 Ash 터미널에서 "rebaseall"을 사용해 보았습니다. 이렇게 하면 기본 설치 후에 개별 패키지가 설치되는 문제가 분명히 해결되지만 지금까지는 아무것도 작동하지 않습니다.

나에게 도움이 될 만한 아이디어가 있는 사람이 있나요?

편집하다:make installSteeldriver 덕분에 .Cygwin 파일 구성을 해결했습니다.Windows에 Seismic Unix 설치실제로는 /config 폴더에 있으며 호출됩니다 Makefile.config_Cygwin_32(주석 참조). 이를 통해 대부분의 명령을 전달할 수 있습니다 make xxxinstall.

그러나 이제 마지막 단계에 또 다른 오류 메시지가 나타납니다: make sfinstall. 다음 오류가 발생합니다.

make[4]: Entering directory '/usr/local/su2/src/Sfio/src/lib/sfio/Stdio_s'
cc -c -I. -I.. -O -Dvt_threaded=0  stdfgetc.c
In file included from /usr/include/sys/errno.h:11:0,
                 from /usr/include/errno.h:9,
                 from ../vthread.h:14,
                 from ../sfhdr.h:58,
                 from stdio_s.h:11,
                 from stdfgetc.c:1:
/usr/include/sys/reent.h:285:26: error: conflicting types for ‘__FILE’
 typedef struct __sFILE64 __FILE;
                          ^~~~~~
In file included from stdfgetc.c:1:0:
stdio_s.h:8:25: note: previous declaration of ‘__FILE’ was here
 typedef struct _sfio_s *__FILE;
                         ^~~~~~
make[4]: *** [Makefile:25: stdfgetc.o] Error 1
make[4]: Leaving directory '/usr/local/su2/src/Sfio/src/lib/sfio/Stdio_s'
make[3]: *** [Makefile:146: mkstdio_s] Error 2
make[3]: Leaving directory '/usr/local/su2/src/Sfio/src/lib/sfio'
make[2]: *** [Makefile:79: install] Error 2
make[2]: Leaving directory '/usr/local/su2/src/Sfio/src/lib/sfio'
make[1]: *** [Makefile:7: INSTALL] Error 2
make[1]: Leaving directory '/usr/local/su2/src/Sfio'
make: *** [Makefile:129: sfinstall] Error 2

여기서 무엇을 해야할지 아는 사람 있나요? 처음에 이 작업을 수행하지 않은 후 새로 압축을 푼 소스 타르볼을 사용하여 모든 단계를 다시 시도했지만 오류 메시지가 지속되었습니다.

답변1

다음 절차는 64비트 cygwin에 대한 것입니다.

cp configs/Makefile.config_Cygwin_32 Makefile.config

Makefile.config를 다음으로 패치합니다.

--- configs/Makefile.config_Cygwin_32   2015-03-17 16:36:38.000000000 +0100
+++ Makefile.config     2018-01-28 19:37:35.224138200 +0100
@@ -34,7 +34,7 @@
 LINEHDRFLAG =
 XDRFLAG = # -DSUXDR
 ENDIANFLAG = -DCWP_LITTLE_ENDIAN
-LARGE_FILE_FLAG = # -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE
+LARGE_FILE_FLAG =  -D_FILE_OFFSET_BITS=64 # -D_LARGEFILE64_SOURCE

 CWP_FLAGS = $(LARGE_FILE_FLAG) $(ENDIANFLAG) $(XDRFLAG) $(LINEHDRFLAG)

@@ -59,10 +59,10 @@
 # use both X11 path conventions
 #-----------------------------------------------------------------------

-IX11 = /usr/X11/include
-LX11 = /usr/X11/lib
-IMOTIF = /usr/X11R6/include
-LMOTIF = /usr/X11R6/lib
+IX11 = /usr/include/X11
+LX11 = /usr/lib
+IMOTIF = /usr/include/X11
+LMOTIF = /usr/lib

 LD_LIBRARY_PATH += $(CWPROOT)/lib:${LX11}:${LMOTIF}

@@ -91,7 +91,7 @@

 CC = gcc
 #OPTC = -g  -std=c99 -Wall -pedantic -Wno-long-long
-OPTC = -O  -std=c99 -Wall -pedantic -Wno-long-long
+OPTC = -O   -Wall -pedantic -Wno-long-long
 CFLAGS = -I$I $(OPTC) $(CWP_FLAGS) -D_BSD_SOURCE -D_POSIX_SOURCE

 FC = gfortran

추가 패치make sfinstall

    --- Sfio/src/lib/sfio/Stdio_b/sfstdio.h~        2018-01-28 20:36:09.022523600 +0100
+++ Sfio/src/lib/sfio/Stdio_b/sfstdio.h 2018-01-28 21:21:12.331496700 +0100
@@ -26,7 +26,7 @@

  /* Linux7.2 requires __FILE in wchar.h - we fake it here */
  #include       "FEATURE/sfio"
 -#if _typ___FILE
 +#if defined(_typ___FILE) && !defined(__CYGWIN__)
  typedef FILE   *__FILE;
  #endif

--- Sfio/src/lib/sfio/Stdio_s/stdio_s.h~        2002-09-14 03:01:15.000000000 +0200
+++ Sfio/src/lib/sfio/Stdio_s/stdio_s.h 2018-01-28 20:33:16.400954500 +0100
@@ -4,7 +4,7 @@

 #include       "FEATURE/sfio"

-#if _typ___FILE /* Redhat7.3 requires __FILE in wchar.h */
+#if defined(_typ___FILE) && !defined(__CYGWIN__) /* Redhat7.3 requires __FILE in wchar.h */
 typedef struct _sfio_s *__FILE;
 #endif

관련 정보