On Thu, 7 Nov 2013, at 14:22, Svetlana Tkachenko wrote: > > > On Thu, 7 Nov 2013, at 14:15, Jed Brown wrote: > > Svetlana Tkachenko <[email protected]> writes: > > > > > On Thu, 7 Nov 2013, at 13:59, Jed Brown wrote: > > >> Svetlana Tkachenko <[email protected]> writes: > > >> > What do you mean? (I don't think the program name has to be 'main'.). > > >> > > >> No, it doesn't. The name is meaningless in Fortran, but you need to use > > >> the keyword "program". > > >> > > >> > ~/dev/test/petsc $ cat myexample.F90 > > >> > program myexample > > >> > > > >> > call solver > > >> > end > > >> > ~/dev/test/petsc $ > > >> > > >> Add myexample.o to the makefile so it gets compiled. > > > > > > Already did, please, see: > > > > > > ~/dev/test/petsc $ cat makefile > > > myexample: myexample.o solver.o > > > ${CLINKER} -o $@ $^ ${PETSC_LIB} > > > > > > include ${PETSC_DIR}/conf/variables > > > include ${PETSC_DIR}/conf/rules > > > ~/dev/test/petsc $ > > > > Run make clean; make. If you get the same error, check > > > > $ nm myexample.o > > U _gfortran_set_args > > U _gfortran_set_options > > U _GLOBAL_OFFSET_TABLE_ > > 0000000000000000 T main > > 0000000000000000 r options.0.1881 > > U solver_ > > > > ~/dev/test/petsc $ make clean > ~/dev/test/petsc $ make > gfortran -c -fPIC -Wall -Wno-unused-variable -g -fopenmp > -I/home/<username>/petsc/include -I/home/<username>/petsc/linux-amd64/include > -I/home/<username>/petsc/include/mpiuni -o myexample.o myexample.F90 > gfortran -c -fPIC -Wall -Wno-unused-variable -g -fopenmp > -I/home/<username>/petsc/include -I/home/<username>/petsc/linux-amd64/include > -I/home/<username>/petsc/include/mpiuni -o solver.o solver.F90 > gcc -fopenmp -fopenmp -fPIC -Wall -Wwrite-strings -Wno-strict-aliasing > -Wno-unknown-pragmas -g3 -fno-inline -O0 -fopenmp -o myexample myexample.o > solver.o -Wl,-rpath,/home/<username>/petsc/linux-amd64/lib > -L/home/<username>/petsc/linux-amd64/lib -lpetsc > -Wl,-rpath,/home/<username>/petsc/linux-amd64/lib -lflapack -lfblas -lX11 > -lpthread -Wl,-rpath,/usr/lib/gcc/x86_64-redhat-linux/4.4.7 > -L/usr/lib/gcc/x86_64-redhat-linux/4.4.7 -lgfortran -lm -lm -lstdc++ -lstdc++ > -ldl -lgcc_s -ldl > /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../lib64/crt1.o: In function > `_start': > (.text+0x20): undefined reference to `main' > collect2: ld returned 1 exit status > make: *** [myexample] Error 1 > ~/dev/test/petsc $ nm myexample.o > 0000000000000000 T MAIN__ > U _GLOBAL_OFFSET_TABLE_ > U _gfortran_set_options > 0000000000000000 r options.0.1516 > U solver_ > ~/dev/test/petsc $ >
Using FLINKER instead of CLINKER in the makefile gets it to compile without errors. However, the previous behaviour persists (?). ~/dev/test/petsc $ make gfortran -c -fPIC -Wall -Wno-unused-variable -g -fopenmp -I/home/<username>/petsc/include -I/home/<username>/petsc/linux-amd64/include -I/home/<username>/petsc/include/mpiuni -o myexample.o myexample.F90 gfortran -c -fPIC -Wall -Wno-unused-variable -g -fopenmp -I/home/<username>/petsc/include -I/home/<username>/petsc/linux-amd64/include -I/home/<username>/petsc/include/mpiuni -o solver.o solver.F90 gfortran -fopenmp -fopenmp -fPIC -Wall -Wno-unused-variable -g -fopenmp -o myexample myexample.o solver.o -Wl,-rpath,/home/<username>/petsc/linux-amd64/lib -L/home/<username>/petsc/linux-amd64/lib -lpetsc -Wl,-rpath,/home/<username>/petsc/linux-amd64/lib -lflapack -lfblas -lX11 -lpthread -Wl,-rpath,/usr/lib/gcc/x86_64-redhat-linux/4.4.7 -L/usr/lib/gcc/x86_64-redhat-linux/4.4.7 -lgfortran -lm -lm -lstdc++ -lstdc++ -ldl -lgcc_s -ldl ~/dev/test/petsc $ ./myexample Entered petsc. Init done. WARNING! There are options you set that were not used! WARNING! could be spelling mistake, etc! Option left: name:-threadcomm_nthreads value: 8 Option left: name:-threadcomm_type value: openmp Finalized. ~/dev/test/petsc $
