我一直在試圖運行這個模型,這是幾十年前由其他人編寫的模型。我已經建立了圖書館,但是當我嘗試實際運行程序,我得到以下錯誤:在OSX上使用f77編譯問題10.11
f77 -o mimics1.5 ../source/*.o trunk_hght_f.f
trunk_hght_f.f:
trunk_hght_func:
Undefined symbols for architecture x86_64:
"MAIN__", referenced from:
-u command line option
(maybe you meant: _MAIN__)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我MacOSX上10.11,並which f77
給/usr/local/bin/f77
和f77 -v
還給:
Cynthias-MacBook-Pro-2:input_dir cynthiag$ f77 -v
/usr/local/bin/f77 script based on f2c:
f2c (Fortran to C Translator) version 20100827.
f77
應該在/usr/bin/
而不是?
ld
似乎是這個問題,所以我按照HERE的指示試圖解決它,但它看起來像我的XCode是最新的,我的庫建立和鏈接(據我所知),我甚至重新安裝了binutils
以確保ld
在正確的位置,但沒有成功。 which ld
得到:/usr/bin/ld
和ld -v
給出:
Cynthias-MacBook-Pro-2:input_dir cynthiag$ ld -v
@(#)PROGRAM:ld PROJECT:ld64-264.3.102
configured to support archs: armv6 armv7 armv7s arm64 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em (tvOS)
LTO support using: LLVM version 7.3.0
我是新來fortran
,因此,在設置f77
的時候我可能搞砸了,但我一直停留在這個問題上,現在幾天,所以任何幫助將不勝感激!
如果您的源代碼沒有PROGRAM程序(在f77之前,沒有FUNCTION或SUBROUTINE標題的程序),您需要修復該程序。接下來,應該更容易使用gfortran,而不是20年前的f77翻譯器。 – tim18
@ tim18:不完全確定你的評論的第一部分是什麼意思,但有自述文件告訴我運行的'runit'文件。這就是給我這個錯誤。我也轉向使用gfortran,完全相同的錯誤。 –
@roygvib:我用'gfortran'上的信息編輯了這個問題。一個簡單的'hello world'程序工作正常。當運行你建議的線路時,我得到一個關於一堆重複項的新錯誤類型,結束於:'ld:體系結構x86_64的19個重複符號 collect2:錯誤:ld返回1退出狀態... –