delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2001/04/14/00:29:02

Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT sources DOT redhat DOT com>
List-Archive: <http://sources.redhat.com/ml/cygwin/>
List-Post: <mailto:cygwin AT sources DOT redhat DOT com>
List-Help: <mailto:cygwin-help AT sources DOT redhat DOT com>, <http://sources.redhat.com/ml/#faqs>
Sender: cygwin-owner AT sources DOT redhat DOT com
Delivered-To: mailing list cygwin AT sources DOT redhat DOT com
Message-ID: <3AD7D24F.44F64F82@ece.gatech.edu>
Date: Sat, 14 Apr 2001 00:30:07 -0400
From: "Charles S. Wilson" <cwilson AT ece DOT gatech DOT edu>
X-Mailer: Mozilla 4.75 [en] (WinNT; U)
X-Accept-Language: en
MIME-Version: 1.0
To: Felix Natter <fnatter AT gmx DOT net>
CC: cygwin AT cygwin DOT com
Subject: Re: how to compile programs using (n)curses
References: <18571 DOT 986757346 AT www27 DOT gmx DOT net>

Felix Natter wrote:
> 
> hi,
> 
> when I try to compile a simple (n)curses program using cygwin,
> I get lots of "undefined reference"-messages, one for each ncurses function,
> but with a "impl_" prepended (i.e. impl_waddch).

You probably mean "_imp_" is prepended.  The problem is a mismatch
between your compilation command and your link command.  Apparently, you
did this:

(compile): gcc -c foo.c -o foo.o
and one of the following:
(link   ): gcc -static -o foo.exe foo.o -lncurses
(link   ): gcc -o foo.exe foo.o /usr/lib/libncurses.a

That is, you compiled with the default flags, which set things up for
dll linking, but then explicitly linked to the static library (by
specifying -static, or listing the static lib on the command line
directly).

If you want static linking, then you must compile all your object files
with the -DNCURSES_STATIC flag:
(compile): gcc -DNCURSES_STATIC -c foo.c -o foo.o
then link as above.

If you want dynamic linking, then compile normally (no _STATIC flags)
but link as follows:
(link   ): gcc -o foo.exe foo.o -lncurses (no -static flag, or)
(link   ): gcc -o foo.exe foo.o /usr/lib/libncurses.dll.a

You will probably find /usr/doc/Cygwin/ncurses-5.2.README of interest,
as well as the cygwin-announce messages referenced in that README.

--Chuck

--
Want to unsubscribe from this list?
Check out: http://cygwin.com/ml/#unsubscribe-simple

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019