0

ifort を使用していますが、コンパイラ オプションを使用してプログラムをコンパイルしようとすると、リンク エラーが発生します。それにもかかわらず、私は同じ問題が発生する非常に小さな単純なプログラムでこれらのオプションをテストしました。

したがって、ifort のインストール方法または使用しているシステムのタイプに関係していると思われますが、確信が持てません。これらのプログラムは、オプションなしでコンパイルすると問題なくコンパイルされます。私の質問は、私が間違っているのは、コンパイラ オプションを使用しているときにこれらのエラーが発生しないようにする方法があるか、使用しているシステムと単に互換性がないコンパイラ オプションがあるかということです。

プログラムが定期的にコンパイルされる方法は次のとおりです。

 ifort -free  testrealprint.out testrealprint.f90

オプションを指定してプログラムをコンパイルする方法は次のとおりです。

    ifort -free  -O2 -stand f03 -check all -traceback -warn all -fstack-protector -    assume protect_parens -implicitnone testrealprint.out testrealprint.f90

コンパイラ オプションをテストするために使用している非常に単純なコードを次に示します。

program main 

implicit none

real, dimension(1:3)  :: adremvect
 integer :: j
 character (LEN = 7) :: adremchar, adremcharadj,adremcharadjtrm, adremcharnew 
 adremvect = (/ 2.0, 1.3, 1.0 /)
  do j = 1, 3
        write(adremchar, '(f5.1)') adremvect(j)
        adremcharadj = adjustl(adremchar)
        adremcharadjtrm =  trim(adremcharadj)
         adremcharnew = adremchar(4:)
          print *, adremvect(j), adremcharadj, adremcharadjtrm, adremcharnew
 end do

コンパイラ オプションを使用したときに表示されるエラー メッセージの一部を次に示します。

testrealprint.out: In function `_start':
(.text+0x0): multiple definition of `_start'
 /usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib64/crt1.o:(.text+0x0): first     defined here
  testrealprint.out: In function `_fini':
  (.fini+0x0): multiple definition of `_fini'
  /usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib64/crti.o:(.fini+0x0): first     defined here
   testrealprint.out:(.rodata+0x0): multiple definition of `_IO_stdin_used'
   /usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib64/crt1.o:  (.rodata.cst4+0x0):   first defined here
        testrealprint.out: In function `__data_start':
     (.data+0x0): multiple definition of `__data_start'
   ld: error in testrealprint.out(.eh_frame); no .eh_frame_hdr table will be created.
4

1 に答える 1