This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Compiling gcc-4.1.2 on 64-bit Ubuntu machines


On 25 January 2011 11:33, Olumide wrote:
> On 25/01/2011 10:58, Jonathan Wakely wrote:
>>
>> On 25 January 2011 10:31, Olumide wrote:
>>>
>>> I would like to roll out the build to other machines (several dozen
>>> actually). I've tried copying the entire hierarchy (source and build) to
>>> the
>>> target machines and then running make install but I'm getting the error
>>> message (I'd appreciate help solving this problem -- thanks):
>>
>> The problem is that "make install" checks if it needs to rebuild, and
>> notices that system headers and other things have changed.
>>
>> Don't do it that way, instead use "DESTDIR"
>>
>> http://www.gnu.org/prep/standards/html_node/DESTDIR.html
>>
>> This allows you to copy the entire installed tree (not the source and
>> build trees) to a temporary staging area, from where it can be
>> packaged up into an archive, then extracted on the destination
>> machines.
>
> Thanks Jon. One tiny question tho' (I'm total newbie at this). When do I do
> make DESTDIR? At the stage, make -j 2 bootstrap, in which case the command
> would be make DESTDIR=/transfer/gcc-build-archive -j 2, or at the final make
> install stage? (The latter doesn't work.)

Read the link I sent, which says "DESTDIR should be supported only in
the install* and uninstall* targets, as those are the only targets
where it is useful."

You use DESTDIR with "make install" as in the example on that page.

> If the former is the case, then I would simply copy
> /transfer/gcc-build-archive to the target machines and run make install on
> each, right?

No.  You do not run make on the target machines.

# configure gcc
make
make install DESTDIR=/tmp/stage

"If your installation step would normally install ‘/usr/local/bin/foo’
and ‘/usr/local/lib/libfoo.a’, then an installation invoked as in the
example above would install ‘/tmp/stage/usr/local/bin/foo’ and
‘/tmp/stage/usr/local/lib/libfoo.a’ instead."

So then you package up all the files under /tmp/stage, which are
arranged in a directory hierarchy exactly as you want in their final
installed location, but under /tmp/stage not /, so you just package
that directory tree up and then extract it on the target machine

cd /tmp/stage
tar czf /tmp/gcc.tar.gz .
# copy archive to target machine and extract


> Also, do I have to install texinfo and ncurses on the target machines?

No, because all you do on the target machine is extract an archive.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]