moving gcc from the installation path: is it allowed?
Michael Meissner
meissner@linux.vnet.ibm.com
Mon Feb 9 19:36:00 GMT 2009
On Sat, Feb 07, 2009 at 08:50:35PM -0500, Maurizio Vitale wrote:
> Michael Meissner <meissner@linux.vnet.ibm.com> writes:
>
> > As long as you move the whole tree, and execute the compiler via a full
> > pathname, it should work (and are not running under VMS). Here the code in
> > gcc.c that does this:
> >
>
> Thanks a lot. Do you know if this is the relevant ChangeLog entry?
>
> 2006-11-13 Carlos O'Donell <carlos@codesourcery.com>
> Mark Mitchell <mark@codesourcery.com>
>
> * gcc.c: Organize search path variables into $prefix relative,
> and well-known native. Add comments.
> (add_sysrooted_prefix): Add comment.
> (process_command): If !gcc_exec_prefix add $prefix based paths.
> If *cross_compile == '0', add native well-known paths.
> Assert tooldir_base_prefix is always relative.
> (main): If print_search_dirs, and if gcc_exec_prefix is set,
> use this value for 'install:' path.
> * Makefile.in: Add GCC_EXEC_PREFIX to generated site.exp.
>
> I certainly remember a time when paths were hardcoded in gcc's binary
> and I need to figure out which versions of GCC can be safely moved
> around. In my industry people are still using unbelivably old versions
> of gcc. Don't ask. My industry is where people design processors and
> other chips so that people can run newer versions of gcc :-)
While that modified the search somewhat, I wrote the original relative path
support much earlier when I worked at Cygnus Solutions:
Mon Nov 8 14:16:57 1999 Michael Meissner <meissner@cygnus.com>
* invoke.texi (Environment Variables): Document relative path
lookup.
* gcc.c (DIR_UP): If not defined, define as "..".
(standard_bindir_prefix): New static, holds target location to
install binaries.
(split_directories): New function to split a filename into
component directories.
(free_split_directories): New function, release memory allocated
by split_directories.
(make_relative_prefix): New function, make a relative pathname if
the compiler is not in the expected location.
(process_command): If GCC_EXEC_PREFIX was not specified, see if we
can figure out an appropriate prefix from argv[0].
* Makefile.in (DRIVER_DEFINES): Use unlibsubdir in definition of
STANDARD_STARTFILE_PREFIX and TOOLDIR_BASE_PREFIX. Define
STANDARD_BINDIR_PREFIX.
and:
Fri Mar 27 16:04:49 1998 Michael Meissner <meissner@cygnus.com>
* gcc.c (set_std_prefix): Add declaration.
(process_command): If GCC_EXEC_PREFIX is set, remove /lib/gcc-lib/
suffix, and update the standard prefix prefix.c uses.
* prefix.c (std_prefix): New global to hold default prefix value.
(get_key_value): Change to use std_prefix instead of PREFIX.
(translate_name): Likewise.
(update_path): Likewise.
(get_key_value): Release allocated scratch storage.
(set_std_prefix): New function to reset the standard prefix.
--
Michael Meissner, IBM
4 Technology Place Drive, MS 2203A, Westford, MA, 01886, USA
meissner@linux.vnet.ibm.com
More information about the Gcc-help
mailing list