[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