Thanks a lot for the explanation. I will simply leave the makefile in the same directory of codes to avoid making mistakes.<div><br></div><div>best,</div><div>Alan<br><div><br><div class="gmail_quote">On Thu, Aug 25, 2011 at 2:01 PM, Barry Smith <span dir="ltr">&lt;<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><br>
ComputeRHS.o: Programs/ComputeRHS.c Programs/ComputeRHS.h Programs/def.h chkopts<br>
        -${CLINKER} -o ComputerRHS.o  Programs/ComputeRHS.c ${PETSC_SNES_LIB}<br>
<br>
  Don&#39;t use the CLINKER to compile code. That is only for linking the executable.  So for example you should be able to us<br>
<br>
myprogram: Programs/ComputeRHS.o<br>
        -${CLINKER} -o myprogram  Programs/ComputeRHS.o ${PETSC_SNES_LIB}<br>
<br>
  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.<br>
<br>
   Barry<br>
<div><div></div><div class="h5"><br>
<br>
On Aug 25, 2011, at 1:56 PM, Alan Wei wrote:<br>
<br>
&gt; Dear all,<br>
&gt;     I hope you&#39;re having a nice day.<br>
&gt;     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:<br>

&gt;<br>
&gt; /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<br>

&gt; Programs/ComputeRHS.c:1:23: error: petscdmda.h: No such file or directory<br>
&gt; Programs/ComputeRHS.c:2:22: error: petscksp.h: No such file or directory<br>
&gt; Programs/ComputeRHS.c:3:23: error: petscpcmg.h: No such file or directory<br>
&gt; Programs/ComputeRHS.c:4:23: error: petscdmmg.h: No such file or directory<br>
&gt; In file included from Programs/ComputeRHS.c:5:<br>
&gt; Programs/def.h:6:22: error: petscsys.h: No such file or directory<br>
&gt; In file included from Programs/ComputeRHS.c:5:<br>
&gt; Programs/def.h:25: error: expected specifier-qualifier-list before PetscReal<br>
&gt; Programs/def.h:29: error: expected specifier-qualifier-list before PetscScalar<br>
&gt; Programs/def.h:35: error: expected specifier-qualifier-list before PetscInt<br>
&gt; Programs/def.h:41: error: expected specifier-qualifier-list before PetscScalar<br>
&gt; Programs/ComputeRHS.c:10: error: expected =, ,, ;, asm or __attribute__ before ComputeRHS<br>
&gt; make: [ComputeRHS.o] Error 1 (ignored)<br>
&gt; make: *** No rule to make target `Initialization.o&#39;, needed by `ex29&#39;.  Stop.<br>
&gt;<br>
&gt;     My codes are attached. Could you please help me to figure this out?<br>
&gt;<br>
&gt; thanks,<br>
&gt; Alan<br>
</div></div>&gt; &lt;MakeFileProblem.zip&gt;<br>
<br>
</blockquote></div><br></div></div>