[conspire] Breezy Badger/configure something

Rick Moen rick at linuxmafia.com
Tue Jan 3 17:07:20 PST 2006


Quoting John Andrews (jla1200 at netzero.net):

[Ubuntu/Kubuntu 5.10, compiling units 1.74 as an exercise:]

> It seems okay to this point.

Yep.

> Why doesn't this ./configure --prefix$HOME/unit174 command work right [?]
                                      ^^

Seems to need a "=", there.   Observe:

  $ cd /tmp
  $ mkdir foo
  $ tar xzf units-1.74.tar.gz 
  $ cd units-1.74
  $ ./configure --prefix=/tmp/foo
  creating cache ./config.cache
  checking for gcc... gcc
  checking whether the C compiler (gcc  ) works... yes
  checking whether the C compiler (gcc  ) is a cross-compiler... no
  checking whether we are using GNU C... yes
  checking whether gcc accepts -g... yes
  checking for gcc option to accept ANSI C... 
  checking how to run the C preprocessor... gcc -E
  checking for function prototypes... yes
  checking for working const... yes
  checking for a BSD compatible install... /usr/bin/install -c
  checking for tparm in -lncurses... yes
  checking for readline in -lreadline... yes
  checking for readline/readline.h... yes
  checking for string.h... yes
  checking for stdlib.h... yes
  checking for strchr... yes
  checking for strspn... yes
  checking for strtok... yes
  updating cache ./config.cache
  creating ./config.status
  creating Makefile
  $ 

By the way, if you follow the diagnostic's advice about using the "--help" 
option:

  $ ./configure --help | more
  Usage: configure [options] [host]
  Options: [defaults in brackets after descriptions]
  Configuration:
    --cache-file=FILE       cache test results in FILE
    --help                  print this message
    --no-create             do not create output files
    --quiet, --silent       do not print `checking...' messages
    --version               print the version of autoconf that created configure
  Directory and file names:
    --prefix=PREFIX         install architecture-independent files in PREFIX
                            [/usr/local]
  [...]
  $


> THIS PART i THOUGHT SHOULD WORK CORRECTLY. Why isn't gcc on my $PATH. i know 
> it's installed.
> jla at vstrom:~/download$ cd units-1.74
> jla at vstrom:~/download/units-1.74$ ./configure
> loading cache ./config.cache
> checking for gcc... no
> checking for cc... no
> configure: error: no acceptable cc found in $PATH
> jla at vstrom:~/download/units-1.74$

This is one of those areas where you'll have to help us.  On the system
in front of me:

  $ which cc
  /usr/bin/cc
  $

I'm guessing that you get this?

  $ which cc
  cc: Command not found.
  $

> Why isn't gcc on my $PATH?

Well, first of all, you didn't tell us what $PATH _is_ on your system.
Again, on the machine in front of me:

  $ echo $PATH 
  /usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/X11R6/bin:/usr/X11R6/bin 
  $

The "which" command returns "/usr/bin/cc" specifically because (1) "/usr/bin" 
is among the directories included in $PATH, and (2) there's a file in
that directory by that name that has its executable bit set.

  $ ls -l /usr/bin/cc
  lrwxr-xr-x    1 root     root            3 Jul 16 01:53 /usr/bin/cc -> gcc
  $

As you can see, it happens to be a symbolic link.  You could create a
"cc" symlink, I suppose -- though I'd put it in /usr/local/bin, rather
than /usr/bin.

A little googling on "Ubuntu cc symlink" reveals the sensible
alternative notion that you can just set an environment variable called "CC",
defining it to be wherever the gcc binary lives.  You decide.   If you 
prefer to declare the CC environment variable, you can just put this
somewhere appropriate in your ~/.bashrc script:

CC=/usr/bin/gcc
export CC

(This assumes that there's a /usr/bin/gcc executable present.  Adjust to
suit whatever you have.)

If that seems too complex or you're queasy about what "somewhere
appropriate" means in this context, just do the symlink thing:

$ su -
# ln -s /usr/bin/gcc /usr/local/bin/cc
# exit

That's probably simpler, really.



Second point:  

> Why isn't gcc on my $PATH?

Wrong question.  You _didn't go looking for_ "gcc", and nor did the
configure script:  The configure script looked for "cc".  

For whatever reason, Ubuntu chose to neither define that environment
variable nor establish a (hard or soft) "cc" executable.  Maybe they 
didn't expect their target audience to compile much software from
tarballs (which seems likely enough) -- or expected that most software
compiled on a Linux box would search for "gcc" instead of just failing
to find "cc" and falling over.  Or both. 

Anyhow, that should help.






More information about the conspire mailing list