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

関連情報