Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
gfortran-5.2.0-m32-dynamiclib-o-shared生成奇怪的文件_Fortran_Fortran90_Gfortran_Fortran77_Ubuntu 15.04 - Fatal编程技术网

gfortran-5.2.0-m32-dynamiclib-o-shared生成奇怪的文件

gfortran-5.2.0-m32-dynamiclib-o-shared生成奇怪的文件,fortran,fortran90,gfortran,fortran77,ubuntu-15.04,Fortran,Fortran90,Gfortran,Fortran77,Ubuntu 15.04,我在tmp0.f中有一个小的fortran代码 subroutine POWERTWO (n, nsquared) integer, intent(in) :: n integer, intent(out) :: nsquared nsquared = n*n return end subroutine POWERTWO 我编译成一个动态库,其中包含: gfortran-5.2.0

我在tmp0.f中有一个小的fortran代码

      subroutine POWERTWO (n, nsquared)
            integer, intent(in) :: n
        integer, intent(out) :: nsquared
            nsquared = n*n
            return
      end subroutine POWERTWO
我编译成一个动态库,其中包含:

gfortran-5.2.0 -m32 -dynamiclib ./tmp0.f -o ./tmp0.so -shared
其中my
gfortran
是使用gcc 5.2.0构建的,配置如下:

Using built-in specs.
COLLECT_GCC=gfortran-5.2.0
COLLECT_LTO_WRAPPER=/usr/local/lvm/gcc-5.2.0/libexec/gcc/x86_64-unknown-linux-gnu/5.2.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../configure --prefix=/usr/local/lvm/gcc-5.2.0 --enable-checking=release --with-gmp=/usr/local/lvm/gmp-6.0.0 --with-mpfr=/usr/local/lvm/mpfr-3.1.2 --with-mpc=/usr/local/lvm/mpc-1.0.3 --enable-languages=c,c++,fortran,objc,obj-c++ --with-isl=/usr/local/lvm/isl-0.14 --with-cloog=/usr/local/lvm/cloog-0.18.4 --program-suffix=-5.2.0
Thread model: posix
gcc version 5.2.0 (GCC)
在OS X 10.10.5下,编译产生了(没有警告)想要的动态库tmp0.dylib,但在ubuntu(15-05)下,我得到了以下警告:

f951: Warning: unrecognized gcc debugging option: y
f951: Warning: unrecognized gcc debugging option: n
f951: Warning: unrecognized gcc debugging option: m
f951: Warning: unrecognized gcc debugging option: i
f951: Warning: unrecognized gcc debugging option: c
f951: Warning: unrecognized gcc debugging option: l
f951: Warning: unrecognized gcc debugging option: i
f951: Warning: unrecognized gcc debugging option: b
除了动态库tmp0.so外,编译还产生了一系列文件:

-rw-rw-r-- 1 XXX XXX  4679 août  25 19:12 tmp0.f.192r.expand
-rw-rw-r-- 1 XXX XXX  1601 août  25 19:12 tmp0.f.193r.vregs
-rw-rw-r-- 1 XXX XXX  1602 août  25 19:12 tmp0.f.194r.into_cfglayout
-rw-rw-r-- 1 XXX XXX  3398 août  25 19:12 tmp0.f.195r.jump
-rw-rw-r-- 1 XXX XXX  1570 août  25 19:12 tmp0.f.207r.reginfo
-rw-rw-r-- 1 XXX XXX  1634 août  25 19:12 tmp0.f.225r.outof_cfglayout
-rw-rw-r-- 1 XXX XXX  1601 août  25 19:12 tmp0.f.226r.split1
-rw-rw-r-- 1 XXX XXX  2980 août  25 19:12 tmp0.f.228r.dfinit
-rw-rw-r-- 1 XXX XXX  3062 août  25 19:12 tmp0.f.229r.mode_sw
-rw-rw-r-- 1 XXX XXX  2980 août  25 19:12 tmp0.f.230r.asmcons
-rw-rw-r-- 1 XXX XXX  6631 août  25 19:12 tmp0.f.234r.ira
-rw-rw-r-- 1 XXX XXX  5581 août  25 19:12 tmp0.f.235r.reload
-rw-rw-r-- 1 XXX XXX  3299 août  25 19:12 tmp0.f.238r.split2
-rw-rw-r-- 1 XXX XXX  4347 août  25 19:12 tmp0.f.242r.pro_and_epilogue
-rw-rw-r-- 1 XXX XXX  3957 août  25 19:12 tmp0.f.245r.jump2
-rw-rw-r-- 1 XXX XXX  4007 août  25 19:12 tmp0.f.258r.stack
-rw-rw-r-- 1 XXX XXX  3925 août  25 19:12 tmp0.f.259r.alignments
-rw-rw-r-- 1 XXX XXX  3513 août  25 19:12 tmp0.f.261r.mach
-rw-rw-r-- 1 XXX XXX  3513 août  25 19:12 tmp0.f.262r.barriers
-rw-rw-r-- 1 XXX XXX  3578 août  25 19:12 tmp0.f.266r.shorten
-rw-rw-r-- 1 XXX XXX  3578 août  25 19:12 tmp0.f.267r.nothrow
-rw-rw-r-- 1 XXX XXX  4216 août  25 19:12 tmp0.f.268r.dwarf2
-rw-rw-r-- 1 XXX XXX  3578 août  25 19:12 tmp0.f.269r.final
-rw-rw-r-- 1 XXX XXX  2387 août  25 19:12 tmp0.f.270r.dfinish
这些文件是什么,我可以通过传递给
gfortran
的一些不错的选项来避免它们的产生吗?

动态库(.dylib)适用于您的mac。在Linux上,我们使用共享库(
.so
),您的compile命令应该省略
-dynamiclib
,您的警告告诉您无法理解它。我也会删除
-m32
,除非您特别需要32位代码

gfortran-5.2.0 -fPIC -shared ./tmp0.f -o ./tmp0.so
将正确构建您的库。如果将其保存在构建目录中,还需要让动态链接器处于其所在位置,方法是使用
LD_LIBRARY_PATH
环境变量或使用
-rpath
链接器选项将其链接到的最终二进制文件,以将库路径编码到可执行文件中

这些乱七八糟的文件是gcc对
-dynamic
的解释造成的。它将It解释为
-da
(并警告您不要理解其余部分)。
-d
选项使GCC在遵从过程中发出调试转储,
a
表示发出所有调试转储。您可以将它们全部删除,并且不会使用上面给出的命令行输出它们