[petsc-users] PETSc, C++ and Eclipse

Matt Bockman mdbockma at ucsd.edu
Wed Jul 27 17:25:56 CDT 2011


Thanks everyone for the help,

I was able to compile a single example in Eclipse using the provided
makefile. I'm pretty new to makefiles so it's a LOT to digest. I'm now
manually creating a makefile for my project in Eclipse (and I've set Eclipse
up to use a makefile that I create instead of automatically generating one).
Unfortunately this is a big pain but since I can't figure out how to make
Eclipse automatically include a few files in the makefile I don't really
have any other choices :(.

Thanks again,
Matt

On Wed, Jul 27, 2011 at 1:43 PM, Mohammad Mirzadeh <mirzadeh at gmail.com>wrote:

> There two problems(I think) in this code.
>
> 1) there is no main function in your source code. If this is the only file
> you are compiling, you need to change the function name to main.
> 2) linking should be done after object files are created. A simple g++ call
> would first compile the main file and then link the object to the petsc lib
> i.e
>
> g++ -c -I($PETSC_INCLUDE) main.cpp
> g++ -o main main.o $PETSC_LIBS
>
> alternatively, you could do it in a single line if you like
>
> g++ -o main -I($PETSC_INCLUDE) main.cpp $PETSC_LIBS
>
> my point is you should link to petsc after compiling your own code. So
> wherever in Eclipse that you are seting the parameters, make sure the
> $PETSC_LIBS is in the linker option and not compiler.
>
> Mohammad
>
>
> On Wed, Jul 27, 2011 at 12:39 PM, Matt Bockman <mdbockma at ucsd.edu> wrote:
>
>> I added the include directories from "make getincludedirs" and I added the
>> line from "make getlinklib". Eclipse creates a gcc call as follows:
>>
>> /home/mdbockman/Documents/Research/codes/petsc/petsc-3.1-p8/linux-gnu-c-debug/bin/mpicc
>> -I/home/mdbockman/Documents/Research/codes/petsc/petsc-3.1-p8/linux-gnu-c-debug/include
>> -I/home/mdbockman/Documents/Research/codes/petsc/petsc-3.1-p8/include
>> -I/home/mdbockman/Documents/Research/codes/petsc/petsc-3.1-p8/linux-gnu-c-debug/include
>> -O0 -g3 -pg -p -Wall
>> -Wl,-rpath,/home/mdbockman/Documents/Research/codes/petsc/petsc-3.1-p8/linux-gnu-c-debug/lib
>> -Wl,-rpath,/home/mdbockman/Documents/Research/codes/petsc/petsc-3.1-p8/linux-gnu-c-debug/lib
>> -L/home/mdbockman/Documents/Research/codes/petsc/petsc-3.1-p8/linux-gnu-c-debug/lib
>> -lpetsc -lX11
>> -Wl,-rpath,/home/mdbockman/Documents/Research/codes/petsc/petsc-3.1-p8/linux-gnu-c-debug/lib
>> -L/home/mdbockman/Documents/Research/codes/petsc/petsc-3.1-p8/linux-gnu-c-debug/lib
>> -lflapack -lfblas -lnsl -lrt -lm
>> -L/home/mdbockman/Documents/Research/codes/petsc/petsc-3.1-p8/linux-gnu-c-debug/lib
>> -L/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2
>> -L/usr/lib/x86_64-linux-gnu -ldl -lmpich -lpthread -lrt -lgcc_s -lmpichf90
>> -lgfortran -lm -lm -ldl -lmpich -lpthread -lrt -lgcc_s -ldl -MMD -MP
>> -MF"SparseMatrixPetsc.d" -MT"SparseMatrixPetsc.d" -o"SparseMatrixPetsc.o"
>> "../SparseMatrixPetsc.c
>>
>> And when it is compiled I get the following:
>>
>> http://pastebin.com/CbRzYcZj
>>
>> The source file which is being compiled is:
>>
>> http://pastebin.com/Q85hXvnS
>>
>> Please have a look. I'm not quite sure what I'm doing wrong but I feel
>> like I'm getting closer and closer to the solution.
>>
>> Matt
>>
>>
>> On Wed, Jul 27, 2011 at 11:52 AM, Satish Balay <balay at mcs.anl.gov> wrote:
>>
>>> use:
>>> make getincludedirs
>>>
>>> Satish
>>>
>>> On Wed, 27 Jul 2011, Mohammad Mirzadeh wrote:
>>>
>>> > I applogize for the mistake; Include files are actually located
>>> > in $PETSC_DIR/include
>>> >
>>> > On Wed, Jul 27, 2011 at 11:18 AM, Mohammad Mirzadeh <
>>> mirzadeh at gmail.com>wrote:
>>> >
>>> > > Ok then. Now I don't have enough experience with Eclipse so
>>> > > I apologize beforehand if you already know these/have tried them out.
>>> If
>>> > > not, hopefully they can be of help. I assume there should be a way in
>>> > > Eclipse to give it the link lib directory. In plain makefile that's
>>> just a
>>> > > simple step when linking. To get all the needed linklibs for petsc,
>>> you can
>>> > > do
>>> > >
>>> > > make getlinklibs
>>> > >
>>> > > in the $PETSC_DIR. As for the needed include files, they are all
>>> located
>>> > > in
>>> > >
>>> > > $PETSC_DIR/$PETSC_ARCH/include
>>> > >
>>> > > Again, its easy to use these directories along with your makefile.
>>> I'm not
>>> > > sure about how you give them to Eclipse though. Hopefully this has
>>> been
>>> > > helpful.
>>> > >
>>> > > Best,
>>> > > Mohammad
>>> > >
>>> > >
>>> > >
>>> > >
>>> > > On Wed, Jul 27, 2011 at 10:52 AM, Matt Bockman <mdbockma at ucsd.edu>
>>> wrote:
>>> > >
>>> > >> Just pointing it to the library would be sufficient.
>>> > >>
>>> > >> Matt
>>> > >>
>>> > >>
>>> > >> On Wed, Jul 27, 2011 at 10:21 AM, Mohammad Mirzadeh <
>>> mirzadeh at gmail.com>wrote:
>>> > >>
>>> > >>> So do you want to be able to compile PETSc with Eclipse or just
>>> point it
>>> > >>> to the library to use in your own applications?
>>> > >>>
>>> > >>>
>>> > >>> On Wed, Jul 27, 2011 at 9:14 AM, Matt Bockman <mdbockma at ucsd.edu>
>>> wrote:
>>> > >>>
>>> > >>>> Thanks Mohammad,
>>> > >>>>
>>> > >>>> I'll give that a shot. I use Qt Creator for some GUI applications
>>> so I
>>> > >>>> am familiar with it, but I've never tried doing a non-Qt project
>>> in it. I'd
>>> > >>>> really like to get Eclipse to work.
>>> > >>>>
>>> > >>>> Regarding the makefiles for eclipse. There are makefiles that it
>>> > >>>> generates (which are for GNU make) but I think I can also manually
>>> create my
>>> > >>>> makefiles. After sleeping on it, it seems like this might be the
>>> best
>>> > >>>> option, unless I can figure out a way to configure eclipse to
>>> include the
>>> > >>>> conf/variables and conf/rules files in the makefile.
>>> > >>>>
>>> > >>>> Matt
>>> > >>>>
>>> > >>>>
>>> > >>>> On Wed, Jul 27, 2011 at 12:01 AM, Mohammad Mirzadeh <
>>> mirzadeh at gmail.com
>>> > >>>> > wrote:
>>> > >>>>
>>> > >>>>> Although this is sort of orthogonal to what you do right now,
>>> > >>>>> I recommend Qt Creator as an alternative IDE to Eclipse. It links
>>> nicely
>>> > >>>>> with PETSc(or any other library for that matter) and has
>>> excellent c/c++
>>> > >>>>> support.
>>> > >>>>>
>>> > >>>>> Mohammad
>>> > >>>>>
>>> > >>>>>
>>> > >>>>> On Tue, Jul 26, 2011 at 7:22 PM, Barry Smith <bsmith at mcs.anl.gov
>>> >wrote:
>>> > >>>>>
>>> > >>>>>>
>>> > >>>>>>  There is a tiny bit of information in the PETSc users manual
>>> about
>>> > >>>>>> Eclipse:
>>> > >>>>>>
>>> > >>>>>> \section{Eclipse Users} \sindex{eclipse}
>>> > >>>>>>
>>> > >>>>>> If you are interested in developing code that uses PETSc from
>>> Eclipse
>>> > >>>>>> or developing PETSc in Eclipse and have knowledge of how to do
>>> indexing and
>>> > >>>>>> build libraries in Eclipse please contact us at \
>>> > >>>>>> trl{petsc-dev at mcs.anl.gov}.
>>> > >>>>>>
>>> > >>>>>> To make PETSc an Eclipse package
>>> > >>>>>> \begin{itemize}
>>> > >>>>>> \item Install the Mecurial plugin for Eclipse and then import
>>> the
>>> > >>>>>> PETSc repository to Eclipse.
>>> > >>>>>> \item elected New->Convert to C/C++ project and selected shared
>>> > >>>>>> library. After this point you can perform searchs in the code.
>>> > >>>>>> \end{itemize}
>>> > >>>>>>
>>> > >>>>>>  A PETSc user has provided the following steps to build an
>>> Eclipse
>>> > >>>>>> index for PETSc that can be used with their own code without
>>> compiling PETSc
>>> > >>>>>> source into their project.
>>> > >>>>>> \begin{itemize}
>>> > >>>>>> \item In the user project source directory, create a symlink to
>>> the
>>> > >>>>>> petsc/src directory.
>>> > >>>>>> \item Refresh the project explorer in Eclipse, so the new
>>> symlink is
>>> > >>>>>> followed.
>>> > >>>>>> \item Right-click on the project in the project explorer, and
>>> choose
>>> > >>>>>> "Index -> Rebuild". The index should now be build.
>>> > >>>>>> \item Right-click on the PETSc symlink in the project explorer,
>>> and
>>> > >>>>>> choose "Exclude from build..." to make sure Eclipse does not try
>>> to compile
>>> > >>>>>> PETSc with the project.
>>> > >>>>>> \end{itemize}
>>> > >>>>>>
>>> > >>>>>> We'd love to have someone figure out how to do it right and
>>> include
>>> > >>>>>> that information.
>>> > >>>>>>
>>> > >>>>>>   Barry
>>> > >>>>>>
>>> > >>>>>> On Jul 26, 2011, at 4:32 PM, Matt Bockman wrote:
>>> > >>>>>>
>>> > >>>>>> > Has anyone gotten PETSc to work w/Eclipse? Eclipse nicely
>>> generates
>>> > >>>>>> all my makefiles for me for my current project (which is written
>>> in C++).
>>> > >>>>>> I'd like to link PETSc w/my application but I'm not sure how to
>>> do this.
>>> > >>>>>> >
>>> > >>>>>> > Suggestions?
>>> > >>>>>> >
>>> > >>>>>> > Thanks,
>>> > >>>>>> > Matt
>>> > >>>>>>
>>> > >>>>>>
>>> > >>>>>
>>> > >>>>
>>> > >>>
>>> > >>
>>> > >
>>> >
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20110727/17709100/attachment.htm>


More information about the petsc-users mailing list