特定の会社の以前の排他的なFORTRANレガシーコードを使用しているため(多くのソースコードを公開できません)、ファイルのやり取りに問題があります。私のコンパイラbashシェルがInstall
呼び出され、make newspaper
bashシェルを介して一連の他の関数を呼び出すことによってmakefile
生成されますnewspaper
。ただし、出力ファイルと比較するために入力ファイルから呼び出されますnewspaper
。エラーがないかどうかを確認するためにファイルを開いてみました。Install
newspaper
not found
newspaper
テキストに変換しようとしましたが、newspaper
数字でいっぱいのテキストファイルが作成されました。何が間違っていてnot found
問題が発生したのかを調べるには、ファイルを「コード」として読み取る必要があります。
明確にするために:
newspaper
端末で実行されたときと同じバイナリファイルです。less newspaper
私のLinuxオペレータはバイナリファイルだと言います。newspaper
内部呼び出しのInstall
形式は次のnewspaper < xfile1R.in > f1.test
とおりです。diff xfile1R.out f1.test > f1.dif
- gfortranはUbuntuで使用されるコンパイラで、cドライブはマウントディスクです。
- リトルエンディアンは、使用されるバイナリ形式に基づいている必要があります。このウェブサイト
私はLinuxとFORTRANに関して愚かな奴です。私はただ初歩的な間違いを犯しているかもしれません。どんなアドバイスも本当にありがとうございます。これがLinuxの問題なのかFORTRANの問題なのか分かりません。
roman@DESKTOP-QKJTF3S:/mnt/c/Users/roman/Documents/NEWSPAPER/Newspaper/Newspaper$ sh ./Install.sh
cat makefile.sh >makefile
chmod a+x makefile
make: 'newspaper' is up to date.
./Install.sh: 10: newspaper: not found
./Install.sh: 12: newspaper: not found
./Install.sh: 14: newspaper: not found
./Install.sh: 16: newspaper: not found
./Install.sh: 18: newspaper: not found
./Install.sh: 20: newspaper: not found
84 -rwxrwxrwx 1 roman roman 83071 Feb 17 16:08 f1.dif
152 -rwxrwxrwx 1 roman roman 153543 Feb 17 16:08 f2.dif
108 -rwxrwxrwx 1 roman roman 109718 Feb 17 16:08 f3.dif
232 -rwxrwxrwx 1 roman roman 236209 Feb 17 16:08 f4.dif
164 -rwxrwxrwx 1 roman roman 166612 Feb 17 16:08 f5.dif
48 -rwxrwxrwx 1 roman roman 48898 Feb 17 16:08 f6.dif
./Install.sh: 31: Syntax error: newline unexpected
編集1:file newspaper
確認してくださいPATH
roman@DESKTOP-QKJTF3S:/mnt/c/Users/roman/Documents/NEWSPAPER/Newspaper/Newspaper$ file newspaper
newspaper: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, BuildID[sha1]=8ac6de30da50639d7e3ea55a09416b049a5291c0, for GNU/Linux 3.2.0, not stripped
編集2:ファイルを回復しますか?
#
# Makefile for newspaper
#
OBJF = \
sfun1.o \
sfun2.o \
sfun3.o \
sfun4.o \
sfun5.o \
sfun6.o \
sfun7.o
FLAGS = -O2 -static -std=legacy
COMP = gfortran
newspaper: $(OBJF)
$(COMP) $(FLAGS) -o newspaper $(OBJF)
.f.o:
$(COMP) $(FLAGS) -c $< -o $*.o
編集3:Install
エラー
#! /bin/csh -f
make flops
./newspaper < xfile1R.in > f1.test
diff xfile1R.out f1.test > f1.dif
./newspaper < xfile2R.in > f2.test
diff xfile2R.out f2.test > f2.dif
./newspaper < xfile3R.in > f3.test
diff xfile3R.out f3.test > f3.dif
./newspaper < xfile4R.in > f4.test
diff xfile4R.out f4.test > f4.dif
./newspaper < xfile5R.in > f5.test
diff xfile5R.out f5.test > f5.dif
./newspaper < xfile6.in > f6.test
diff xfile6.out f6.test > f6.dif
ls -als *.dif
# User input for directory to put executable
if ( $1 == '' ) then
echo " "
echo -n "Enter directory for executable file: "
set Edir = $<
else
set Edir = $1
endif
if ( $Edir != '' ) then
mv newspaper $Edir
endif
編集4:より多くの構文エラー、同じエラー
./Install.sh: 30: Syntax error: newline unexpected
roman@DESKTOP-QKJTF3S:/mnt/c/Users/roman/Documents/NEWSPAPER/Newspaper/Newspaper$ ./
-bash: ./: Is a directory
roman@DESKTOP-QKJTF3S:
編集5:cshの確認
roman@DESKTOP-QKJTF3S:/mnt/c/Users/roman/Documents/NEWSPAPER/Newspaper/Newspaper$ sudo apt-get install csh
Reading package lists... Done
Building dependency tree
Reading state information... Done
csh is already the newest version (20110502-5).
0 upgraded, 0 newly installed, 0 to remove and 20 not upgraded.
編集6:成功! !初心者の私を案内してくれた@steeldriverに感謝します。
164 -rwxrwxrwx 1 roman roman 164829 Feb 17 21:36 f1.dif
304 -rwxrwxrwx 1 roman roman 307257 Feb 17 21:36 f2.dif
216 -rwxrwxrwx 1 roman roman 217791 Feb 17 21:36 f3.dif
460 -rwxrwxrwx 1 roman roman 468651 Feb 17 21:36 f4.dif
324 -rwxrwxrwx 1 roman roman 331213 Feb 17 21:36 f5.dif
96 -rwxrwxrwx 1 roman roman 96955 Feb 17 21:36 f6.dif
Enter directory for executable file: ./Outputs
roman@DESKTOP-QKJTF3S:/mnt/c/Users/roman/
ベストアンサー1
成功したデバッグの後、makefile は bash シェルの使用によって一部の編集が必要になるため、ほとんどの変更はスクリプトを明示的に実行するときに行われますnewspaper <input_file.in>...
。./newspaper <input_file.in>...
sh
間違ったこれがどのように機能するかは、ファイルが別のシェルコンパイラをInstall
明示的に指定するため、これをよりよく実行するとファイルが完全に生成されます。csh
Install
./Install
newspaper