LINUX.ORG.RU

Как исправить Makefile

 


0

1
CFLAGS = -Wall -O3 -fopenmp -I ../../../SPOOLES.2.2 ;; у меня установлен libspooles2.2 
-DARCH="Linux" -DSPOOLES -DARPACK -DMATRIXSTORAGE -DNETWORKOUT
FFLAGS = -Wall -O3 -fopenmp

CC=cc
FC=gfortran-8 -ffixed-line-length-none -fdefault-real-8 -std=legacy -fd-lines-as-comments

.c.o :
	$(CC) $(CFLAGS) -c $<
.f.o :
	$(FC) $(FFLAGS) -c $<

include Makefile.inc

SCCXMAIN = ccx_2.11.c

OCCXF = $(SCCXF:.f=.o)
OCCXC = $(SCCXC:.c=.o)
OCCXMAIN = $(SCCXMAIN:.c=.o)

DIR=../../../SPOOLES.2.2

LIBS = \
       $(DIR)/spooles.a \
	../../../ARPACK/libarpack_INTEL.a \ ;; установлен libarpack2
       -lpthread -lm -lc

ccx_2.11: $(OCCXMAIN) ccx_2.11.a  $(LIBS)
	./date.pl; $(CC) $(CFLAGS) -c ccx_2.11.c; $(FC) -fopenmp -Wall -O3 -o $@ $(OCCXMAIN) ccx_2.11.a $(LIBS)

ccx_2.11.a: $(OCCXF) $(OCCXC)
	ar vr $@ $?
                                                                               

Ответ на: комментарий от firkax
make
cc -Wall -O3 -fopenmp -I ../../../SPOOLES.2.2 -DARCH="Linux" -DSPOOLES -DARPACK -DMATRIXSTORAGE -DNETWORKOUT -c ccx_2.11.c
ccx_2.11.c: In function ‘main’:
ccx_2.11.c:1414:18: warning: ‘nkon0’ may be used uninitialized in this function [-Wmaybe-uninitialized]
       ne=ne0;nkon=nkon0;
              ~~~~^~~~~~
In file included from ccx_2.11.c:30:0:
CalculiX.h:40:29: warning: ‘ne0’ may be used uninitialized in this function [-Wmaybe-uninitialized]
 #define RENEW(a,b,c) a=(b *)u_realloc((b *)(a),(c)*sizeof(b),__FILE__,__LINE__,#a)
                             ^~~~~~~~~
ccx_2.11.c:81:43: note: ‘ne0’ was declared here
   iprestr,kode,isolver=0,nslavs=0,nkon_=0,ne0,nkon0,mortar=0,
                                           ^~~
ccx_2.11.c:737:61: warning: ‘nxstate’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  for(i=nxstate;i<nstate_*mi[0]*(ne+nintpoint);i++){xstate[i]=0.;}
                                                    ~~~~~~~~~^~~
gfortran-8 -ffixed-line-length-none -fdefault-real-8 -std=legacy -fd-lines-as-comments -Wall -O3 -fopenmp -c absolute_relative.f
absolute_relative.f:57:12:

          pi=4.d0*datan(1.d0)
            1
Warning: Change of value in conversion from ‘REAL(16)’ to ‘REAL(8)’ at (1) [-Wconversion]
absolute_relative.f:59:25:

          qred_crit=dsqrt(kappa/R)*
                         1
Error: ‘x’ argument of ‘dsqrt’ intrinsic at (1) must be double precision
absolute_relative.f:75:29:

             xflow=0.75/dsqrt(T1)*P1*qred_crit
                             1
Error: ‘x’ argument of ‘dsqrt’ intrinsic at (1) must be double precision
absolute_relative.f:77:30:

             xflow=-0.75/dsqrt(T1)*P1*qred_crit
                              1
Error: ‘x’ argument of ‘dsqrt’ intrinsic at (1) must be double precision
absolute_relative.f:84:13:

          km1=kappa-1.d0
             1
Warning: Possible change of value in conversion from REAL(16) to REAL(8) at (1) [-Wconversion]
absolute_relative.f:85:13:

          kp1=kappa+1.d0
             1
Warning: Possible change of value in conversion from REAL(16) to REAL(8) at (1) [-Wconversion]
absolute_relative.f:95:23:

             nelemswirl=prop(index+3)
                       1
Warning: Possible change of value in conversion from REAL(8) to INTEGER(4) at (1) [-Wconversion]
absolute_relative.f:273:13:

          km1=kappa-1.d0
             1
Warning: Possible change of value in conversion from REAL(16) to REAL(8) at (1) [-Wconversion]
absolute_relative.f:274:13:

          kp1=kappa+1.d0
             1
Warning: Possible change of value in conversion from REAL(16) to REAL(8) at (1) [-Wconversion]
absolute_relative.f:284:23:

             nelemswirl=prop(index+3)
                       1
Warning: Possible change of value in conversion from REAL(8) to INTEGER(4) at (1) [-Wconversion]
Makefile:11: recipe for target 'absolute_relative.o' failed
make: *** [absolute_relative.o] Error 1

saufesma
() автор топика
Ответ на: комментарий от saufesma

Makefile тут ни при чём.

Судя по варнингам у тебя double precision = real(16), а код рассчитан на то что double precision = real(8). Где-то от этого получаются варнинги конвертации типов, а с dsqrt() почему-то уже ошибка - ты ему даёшь real(8) а он хочет real(16).

Попробуй может dsqrt(XXX) заменить на dsqrt(1.d0*(XXX)) в этих местах.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Я попробовал так, убрал опцию -fdefault-real-8, и получил

make
gfortran-8 -ffixed-line-length-none -std=legacy -fd-lines-as-comments -Wall -O3 -fopenmp -c absolute_relative.f
absolute_relative.f:95:23:

 ized in this function [-Wmaybe-uninitialized]
gfortran-8 -ffixed-line-length-none -std=legacy -fd-lines-as-comments -Wall -O3 -fopenmp -c correctvel.f
gfortran-8 -ffixed-line-length-none -std=legacy -fd-lines-as-comments -Wall -O3 -fopenmp -c correctvfa.f
gfortran-8 -ffixed-line-length-none -std=legacy -fd-lines-as-comments -Wall -O3 -fopenmp -c couptempdisps.f
gfortran-8 -ffixed-line-length-none -std=legacy -fd-lines-as-comments -Wall -O3 -fopenmp -c cp_corrected.f
gfortran-8 -ffixed-line-length-none -std=legacy -fd-lines-as-comments -Wall -O3 -fopenmp -c createialdesi.f
gfortran-8 -ffixed-line-length-none -std=legacy -fd-lines-as-comments -Wall -O3 -fopenmp -c createialelem.f
gfortran-8 -ffixed-line-length-none -std=legacy -fd-lines-as-comments -Wall -O3 -fopenmp -c createinterfacempcs.f
gfortran-8 -ffixed-line-length-none -std=legacy -fd-lines-as-comments -Wall -O3 -fopenmp -c createinum.f
createinum.f:20:46:

 

Error: Explicit shaped array with nonconstant bounds at (1)
hybsvd.f:936:32:

       REAL*8 SX(1), SY(1), STEMP
                                1
hybsvd.f:986:18:

       REAL*8 DUMMY
                  2              
Error: Two main PROGRAMs at (1) and (2)
Makefile:11: recipe for target 'hybsvd.o' failed
make: *** [hybsvd.o] Error 1

это часть выхлопа

saufesma
() автор топика
Ответ на: комментарий от firkax

Было

CFLAGS = -Wall -O3 -fopenmp -I ../../../SPOOLES.2.2
-DARCH="Linux" -DSPOOLES -DARPACK -DMATRIXSTORAGE -DNETWORKOUT
FFLAGS = -Wall -O3 -fopenmp

CC=cc
FC=gfortran

.c.o :
	$(CC) $(CFLAGS) -c $<
.f.o :
	$(FC) $(FFLAGS) -c $<

include Makefile.inc

SCCXMAIN = ccx_2.11.c

OCCXF = $(SCCXF:.f=.o)
OCCXC = $(SCCXC:.c=.o)
OCCXMAIN = $(SCCXMAIN:.c=.o)

DIR=../../../SPOOLES.2.2

LIBS = \
       $(DIR)/spooles.a \
	../../../ARPACK/libarpack_INTEL.a \
       -lpthread -lm -lc

ccx_2.11: $(OCCXMAIN) ccx_2.11.a  $(LIBS)
	./date.pl; $(CC) $(CFLAGS) -c ccx_2.11.c; $(FC) -fopenmp -Wall -O3 -o $@ $(OCCXMAIN) ccx_2.11.a $(LIBS)

ccx_2.11.a: $(OCCXF) $(OCCXC)
	ar vr $@ $?

Поменял FC=gfortran на FC=gfortran-8 потому, что у меня gfortran обозначает fortran 95 который This is a dependency package providing the default GNU Fortran 95 compiler.

saufesma
() автор топика
Ответ на: комментарий от firkax

$ gfortran-8 --version GNU Fortran (Ubuntu 8.4.0-1ubuntu1~18.04) 8.4.0 Copyright (C) 2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

ничего не проясняет

saufesma
() автор топика
Ответ на: комментарий от saufesma

make: getcwd: No such file or directory

Это потому что ты удалил директорию с исходниками (видимо, в другом окне), а тут остался в ней (в удалённой). Перейди в новую и всё будет норм.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Внес изменения в Makefile

CFLAGS = -Wall -O3 -fopenmp -I ../../../spooles -DARCH="Linux"
                                          ^^^^ -DSPOOLES -DARPACK -DMATRIXSTORAGE -DNETWORKOUT
FFLAGS = -Wall -O3 -fopenmp

CC=cc
FC=gfortran-8

.c.o :
	$(CC) $(CFLAGS) -c $<
.f.o :
	$(FC) $(FFLAGS) -c $<

include Makefile.inc

SCCXMAIN = ccx_2.11.c

OCCXF = $(SCCXF:.f=.o)
OCCXC = $(SCCXC:.c=.o)
OCCXMAIN = $(SCCXMAIN:.c=.o)

DIR=../../../spooles

LIBS = \
       $(DIR)/spooles.a \
	../../../x86_64-linux-gnu/libarpack.a \
                     ^^^^^^^^^^^^^^^^^^^^^^
       -lpthread -lm -lc

ccx_2.11: $(OCCXMAIN) ccx_2.11.a  $(LIBS)
	./date.pl; $(CC) $(CFLAGS) -c ccx_2.11.c; $(FC) -fopenmp -Wall -O3 -o $@ $(OCCXMAIN) ccx_2.11.a $(LIBS)

ccx_2.11.a: $(OCCXF) $(OCCXC)
	ar vr $@ $?
на выходе
cc -Wall -O3 -fopenmp -I ../../../spooles -DARCH="Linux" -DSPOOLES -DARPACK -DMATRIXSTORAGE -DNETWORKOUT -c arpack.c
In file included from arpack.c:26:0:
spooles.h:26:10: fatal error: misc.h: No such file or directory
 #include <misc.h>
          ^~~~~~~~
compilation terminated.
Makefile:9: recipe for target 'arpack.o' failed
make: *** [arpack.o] Error 1

saufesma
() автор топика
Ответ на: комментарий от saufesma

Ничего не удалял. Что-то не так с SPOOLES.2.2 and ARPACK.

Какой у тебя дистрибутив? Если Debian-based (Debian, Ubuntu) надо еще поставить -dev версии пакетов, там будут содержаться нужные заголовочные файлы и прочая обвязка для компиляции.

praseodim ★★★★★
()
Последнее исправление: praseodim (всего исправлений: 1)