[Mono-dev] ELF runtime path and P/Invoke

Andreas Färber andreas.faerber at web.de
Thu Jan 17 17:59:08 EST 2008


Hello,

Is there a reason not to add $libdir (i.e. $prefix/lib) to the ELF  
runtime path for Mono?

On Solaris the use of their -R option is being favored over the use of  
LD_LIBRARY_PATH in several articles. I thus filed this patch:
https://bugzilla.novell.com/show_bug.cgi?id=354323

Zoltan pointed out that changing this only for Solaris would create an  
inconsistency among the supported platforms. So while testing this  
some more, I found that this feature is not limited to Solaris (-R),  
IRIX and some other, uncommon Unix I can't remember right now (both - 
rpath): Apparently GNU ld on Linux can do the same via -Wl,-rpath.  
Mono is not using this feature, so is there a special reason for not  
doing so?

For me the use of -R/opt/mono/lib makes adding a system-wide  
MonoDevelop .desktop menu item work without going through a custom  
shell script or profile scripts for each user that sets  
LD_LIBRARY_PATH appropriately. libtool does take care to embed the  
runtime path to linked libraries such as an external Boehm GC but it  
doesn't embed paths to libraries only referred to by p/invokes, such  
as libMonoPosixHelper or libgdiplus. Being built inside the mono tree,  
at least libMonoPosixHelper will always end up in Mono's $libdir and  
benefit from this change.

The three options I see are:
1) Leave configure.in as it is and let the user add LDFLAGS when  
desired.
2) Modify configure.in to enhance the runtime path only on Solaris.
3) Modify configure.in to do it for as many platforms as possible.

Andreas



More information about the Mono-devel-list mailing list