[petsc-users] Question on PETSc makefile

Barry Smith bsmith at mcs.anl.gov
Thu Aug 25 14:01:59 CDT 2011


ComputeRHS.o: Programs/ComputeRHS.c Programs/ComputeRHS.h Programs/def.h chkopts
	-${CLINKER} -o ComputerRHS.o  Programs/ComputeRHS.c ${PETSC_SNES_LIB}

  Don't use the CLINKER to compile code. That is only for linking the executable.  So for example you should be able to us

myprogram: Programs/ComputeRHS.o
	-${CLINKER} -o myprogram  Programs/ComputeRHS.o ${PETSC_SNES_LIB}

  Also it generally is much easier to have make files that site in the same directory as the source code, less hassle and less likely for things to go wrong.

   Barry


On Aug 25, 2011, at 1:56 PM, Alan Wei wrote:

> Dear all,
>     I hope you're having a nice day.
>     I met a problem on makefile of PETSc. Original PETSc has the makefile in the same directory of the .c files. However, I want to put all .c files to another directory. I changed the makefile also; however it always has a error saying the PETSc header files can not be found:
> 
> /home/zlwei/soft/mercurial/petsc-dev/arch-linux2-c-debug/bin/mpicc -Wall -Wwrite-strings -Wno-strict-aliasing -Wno-unknown-pragmas -g3  -o ComputerRHS.o  Programs/ComputeRHS.c -L/home/zlwei/soft/mercurial/petsc-dev/arch-linux2-c-debug/lib  -lpetsc -Wl,-rpath,/home/zlwei/soft/mercurial/petsc-dev/arch-linux2-c-debug/lib -lflapack -lfblas -lm -L/usr/lib/gcc/x86_64-redhat-linux/4.1.2 -ldl -lmpich -lopa -lmpl -lrt -lpthread -lgcc_s -lmpichf90 -lgfortran -lm -lm -ldl -lmpich -lopa -lmpl -lrt -lpthread -lgcc_s -ldl 
> Programs/ComputeRHS.c:1:23: error: petscdmda.h: No such file or directory
> Programs/ComputeRHS.c:2:22: error: petscksp.h: No such file or directory
> Programs/ComputeRHS.c:3:23: error: petscpcmg.h: No such file or directory
> Programs/ComputeRHS.c:4:23: error: petscdmmg.h: No such file or directory
> In file included from Programs/ComputeRHS.c:5:
> Programs/def.h:6:22: error: petscsys.h: No such file or directory
> In file included from Programs/ComputeRHS.c:5:
> Programs/def.h:25: error: expected specifier-qualifier-list before PetscReal
> Programs/def.h:29: error: expected specifier-qualifier-list before PetscScalar
> Programs/def.h:35: error: expected specifier-qualifier-list before PetscInt
> Programs/def.h:41: error: expected specifier-qualifier-list before PetscScalar
> Programs/ComputeRHS.c:10: error: expected =, ,, ;, asm or __attribute__ before ComputeRHS
> make: [ComputeRHS.o] Error 1 (ignored)
> make: *** No rule to make target `Initialization.o', needed by `ex29'.  Stop.
> 
>     My codes are attached. Could you please help me to figure this out?
> 
> thanks,
> Alan
> <MakeFileProblem.zip>



More information about the petsc-users mailing list