Runtime library directories
Something I noticed this evening: unixccompiler.py uses -R<dir> for runtime library directives. That's good syntax for ld, but is it good syntax for C compilers? GCC requires -Wl,-R<dir> instead to pass it to the linker; is this standard for Unix C compilers? I suspect this patch below would be too simple to fix the problem, so how to fix this? --amk Index: unixccompiler.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/distutils/unixccompiler.py,v retrieving revision 1.32 diff -u -p -r1.32 unixccompiler.py --- unixccompiler.py 2000/09/27 02:08:14 1.32 +++ unixccompiler.py 2001/02/17 04:51:37 @@ -247,7 +247,7 @@ class UnixCCompiler (CCompiler): return "-L" + dir def runtime_library_dir_option (self, dir): - return "-R" + dir + return "-Wl,-R" + dir def library_option (self, lib): return "-l" + lib
"A.M. Kuchling" wrote:
Something I noticed this evening: unixccompiler.py uses -R<dir> for runtime library directives. That's good syntax for ld, but is it good syntax for C compilers? GCC requires -Wl,-R<dir> instead to pass it to the linker; is this standard for Unix C compilers? I suspect this patch below would be too simple to fix the problem, so how to fix this?
Are you sure that the ld -R flag is really what you want here ? The docs say: -R filename Read symbol names and their addresses from file name, but do not relocate it or include it in the output. This allows your output file to refer sym bolically to absolute locations of memory defined in other programs. I think that the -rpath ld option is what you are really looking for: -rpath directory Add a directory to the runtime library search path. This is used when linking an ELF executable with shared objects. All -rpath arguments are concate nated and passed to the runtime linker, which uses them to locate shared objects at runtime. The -rpath option is also used when locating shared ob jects which are needed by shared objects explicitly included in the link; see the description of the -rpath-link option. If -rpath is not used when linking an ELF executable, the contents of the en vironment variable LD_RUN_PATH will be used if it is defined. The -rpath option may also be used on SunOS. By default, on SunOS, the linker will form a runtime search patch out of all the -L options it is given. If a -rpath option is used, the runtime search path will be formed exclusively using the -rpath op tions, ignoring the -L options. This can be useful when using gcc, which adds many -L options which may be on NFS mounted filesystems. In any case, I'd say you switch on the compiler name and leave the -R option in place for all non-gcc compilers until more testing has been done in this area.
--amk
Index: unixccompiler.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/distutils/unixccompiler.py,v retrieving revision 1.32 diff -u -p -r1.32 unixccompiler.py --- unixccompiler.py 2000/09/27 02:08:14 1.32 +++ unixccompiler.py 2001/02/17 04:51:37 @@ -247,7 +247,7 @@ class UnixCCompiler (CCompiler): return "-L" + dir
def runtime_library_dir_option (self, dir): - return "-R" + dir + return "-Wl,-R" + dir
def library_option (self, lib): return "-l" + lib
_______________________________________________ Distutils-SIG maillist - Distutils-SIG@python.org http://mail.python.org/mailman/listinfo/distutils-sig
-- Marc-Andre Lemburg ______________________________________________________________________ Company: http://www.egenix.com/ Consulting: http://www.lemburg.com/ Python Pages: http://www.lemburg.com/python/
participants (2)
-
A.M. Kuchling
-
M.-A. Lemburg