如何在 Ubuntu 上编译 Ortep3?

如何在 Ubuntu 上编译 Ortep3?

我最近整理了奥特普3在较旧的 CentOS 服务器上使用gfortran -o ortep3 ortep.f -lpgplot -lX11。我认为gfortran版本是 6.5 或类似的版本。我的版本gfortran是:gcc version 9.2.1

我现在想在某些 Ubuntu 机器版本 18.04 或更高版本上编译 ORTEP3。当我尝试编译时ortep,出现错误,例如:

Error: Actual argument contains too few elements for dummy argument ‘itxt’ (1/72) at (1)

以及如下警告:

Warning: Fortran 2018 deleted feature: DO termination statement which is not END DO or CONTINUE with label 10 at (1)

我曾尝试使用旧代码标志-ff2c,但没有效果。libx11,并且pgplot都已安装并可运行。

我尝试使用 进行编译fort77,可以编译,但编译后的代码无法运行。尝试使用 进行编译gfortranortep.f无法编译。

LD_TRACE 来自 CentOS 服务器:

$ LD_TRACE_LOADED_OBJECTS=1 ./Working_ortep3 
linux-vdso.so.1 (0x00007ffc82f42000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f185a9cf000)
libgfortran.so.3 => /usr/lib/x86_64-linux-gnu/libgfortran.so.3 (0x00007f185a89d000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f185a74e000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f185a734000)
libquadmath.so.0 => /usr/lib/x86_64-linux-gnu/libquadmath.so.0 (0x00007f185a6ea000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f185a4f9000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f185a4ce000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f185a4c8000)
/lib64/ld-linux-x86-64.so.2 (0x00007f185ab51000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f185a4c2000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f185a4ba000)
libbsd.so.0 => /usr/lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f185a4a0000)

为了匹配我能够构建和运行 ortep3 的位置,我已经浏览并安装了与依赖于 工作版本的库相匹配的软件包ortep3。我最终安装了:

sudo apt-get install libxdmcp-dev libbsd-dev

错误仍然存​​在。

我不再在能够编译 ortep3 的服务器上工作。我可以询问,但当我能够在那里编译它时,我完成了工作(安装 ortep3 的功能版本)。

以下仅列出错误:

$ gfortran -w -g -o ortep3 ortep.f -lpgplot -lX11 
ortep.f:576:36:

  576 |       CALL SIMBOL(W(2,1),W(3,1),HGT,' ',0.,-1)
      |                                    1
Error: Actual argument contains too few elements for dummy argument ‘itxt’ (1/72) at (1)
ortep.f:577:36:

  577 |       CALL SIMBOL(W(2,2),W(3,2),HGT,' ',0.,-2)
      |                                    1
Error: Actual argument contains too few elements for dummy argument ‘itxt’ (1/72) at (1)
ortep.f:3678:27:

 3678 |       CALL SIMBOL(W,W2,HGT,ITEX,THT,NC)
      |                           1
Error: Actual argument contains too few elements for dummy argument ‘itxt’ (8/72) at (1)
ortep.f:3934:48:

 3934 |   185 if (nout.ge.0) WRITE (NOUT,176)I,maksym(1,fsym)
      |                                                1
Error: Actual argument contains too few elements for dummy argument ‘gp’ (12/2304) at (1)
ortep.f:1258:19:

 1258 |       CALL AXEQB(A,V,V,1)
      |                   1
Error: Actual argument contains too few elements for dummy argument ‘x’ (3/9) at (1)
ortep.f:2084:16:

 2084 |   945 CALL PROJ(D(1,65),DP(1,65),X,XO,VIEW,1,65,L)
      |                1
Error: Actual argument contains too few elements for dummy argument ‘d’ (198/387) at (1)
ortep.f:2117:16:

 2117 |       CALL PROJ(V1,DP,X,XO,VIEW,1,1,1)
      |                1
Error: Actual argument contains too few elements for dummy argument ‘d’ (4/387) at (1)
ortep.f:2123:16:

 2123 |   988 CALL PROJ(DA,DP,X,XO,VIEW,1,3,1)
      |                1
Error: Actual argument contains too few elements for dummy argument ‘d’ (9/387) at (1)
ortep.f:2550:32:

 2550 |       CALL SIMBOL(Y(1),Y(2),HGT,' ',TH,7-NJ3)
      |                                1
Error: Actual argument contains too few elements for dummy argument ‘itxt’ (1/72) at (1)

我不知道这在 CentOS 机器上是如何开始工作的。ortep3据我所知,代码是 Fortran77,但术语 SIMBOL 看起来像是拼写错误,我以为它可能是 SYMBOl,但我不需要修改代码就可以让它编译。

最终目标:添加 svg 文件输出功能,编写 deb 包,并维护它。

答案1

我所看到的来自 Repology- 1.0.3 版本是最新版本。Gentoo
构建该应用程序的版本为 1.0.3-r1。

为了在 Ubuntu 18.04 LTS 上编译它,我们需要安装必要的构建工具:

sudo apt-get install pgplot5 libx11-dev gfortran

然后ortep.f从一些 Gentoo distfiles 镜像下载:

wget http://ftp.corbina.net/pub/Linux/gentoo/distfiles/81/ortep.f

(^ 此版本已pgplot禁用,因此如果你有 2000 年代的版本,可以ortep.f使用https://github.com/ornl-ndav/ortep

并编译它

gfortran -O2 -o ortep3 ortep.f -lpgplot -lX11

它会起作用:

$ ./ortep3
ORTEP-III Version 1.0.3 Jan. 25, 2000
Enter instruction set file name or "exit" [TEP.IN]:  
...

其他可能的替代方案是使用来自的预编译二进制文件https://ornl-ndav.github.io/ortep/compiled.html

相关内容