[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [bgl-discuss] Linking error solution?



Thank you for your kind reply.

I will try with your direction. Thanks again.




On 9/10/05 9:13 AM, "William Gropp" <gropp@xxxxxxxxxxx> wrote:

> At 04:47 PM 9/9/2005, JungMin (Judy) Lee wrote:
>> I am Jung-Min Lee and working with Dr. Lan in IIT. We have installed the
>> accelerator simulation application, called Synergia on BGL. However, we
>> cannot install it.
>> 
>> The codes are made by Fortran90 and C++. Also, it generates a Makefile
>> automatically using configure script.
>> 
>> When I defined CXX=mpicxx and CC=mpicc, it has error like :
>> mpicxx  -g -O2   -o boosterMapDemo6 -L../../../physics_toolkit/src
>> -L../../../beamline/src -L../../../basic_toolkit/src -L../../../mxyzptlk/src
>> -L../../../bmlfactory/src boosterMapDemo6.o -lbmlfactory -lphysics_toolkit
>> -lbeamline -lphysics_toolkit -lbeamline -lmxyzptlk -lbasic_toolkit
>> -L/home/jungmin/glib-1.2.10/lib -lglib -lm -lnsl
>> /bgl/BlueLight/DRV202_2005-050606-SLES8/ppc/blrts-gnu/bin/../lib/gcc-lib/pow
>> erpc-bgl-blrts-gnu/3.2/../../../../powerpc-bgl-blrts-gnu/bin/ld: cannot find
>> -lnsl
> 
> I'd start by simply leaving off -lnsl .  It is rare that an application
> code needs anything from this library (at one time, some systems put
> gethostbyname in there, but you shouldn't need that).  However, you'll
> probably then run into the same C++ to Fortran 90 name problem.
> 
> For that, in the long term, it would be better if the code did not rely on
> the internal naming format of the F90 module functions, because there is no
> requirement that those symbols be valid in another language (you are seeing
> that in the complaints about the "$" character).  One possibility is to use
> a C <=> Fortran 77 naming scheme for the interface between the C and
> Fortran parts of the code.  This is well understood and reasonably portable.
> 
> In the short term, you'll have to add something to the header file that
> defines the mapping from the name you pass to those macros to the names
> generated by the Fortran 90 compiler.  Take the object from the Fortran 90
> file that defines these routines and use the nm command to see what the
> names look like.  E.g., if you do
> 
> xlf90 -c foo.f
> 
> then do
> 
> nm foo.o
> 
> You can do this on one of the platforms where the code works as you expect
> and see what you need to change for F90_MODULE_FUNCTION.
> 
> Also, for straight Fortran code, the xlf series of compilers by default
> does not append an underscore.  You might try
> 
> #define F_FUNCTION(function) function
> 
> instead of
> 
> #define F_FUNCTION(function) function ##_
> 
> Bill
> 
> 
> William Gropp
> http://www.mcs.anl.gov/~gropp
> 

- --------------------------------------------------------------------
To add or remove yourself from this mailing list, use the 'notifyme'
command on any BGL machine. To remove: notifyme -n, to add: notifyme -y.