This is the mail archive of the
mailing list for the Cygwin project.
Re: how to compile programs using (n)curses
"Charles S. Wilson" <firstname.lastname@example.org> writes:
> 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
> 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.
I read this, thanks.
But I compiled as you suggest. In fact, the problem also occurs if I
compile and link in one step:
I saved the following as test_curses.c:
int main(int argc, char** argv)
waddstr(stdscr, "hello world");
gcc -static -DNCURSES_STATIC -o test_curses.exe test_curses
=> undefined reference to endwin ...
gcc -o test_curses.exe test_curses.c
=> undefined reference to _imp__endwin ...
I looks like I have a broken installation. In fact, I installed very
"unconventionally": I downloaded setup.exe, and ran it using wine on
a linux-system (I had to because my windows95-partition is not currently
connected to the internet). After some time, my internet-connection
broke down. I copied the latest/-directory to my win95-partition,
and downloaded the remaining packages. Then I started win95 and run
setup.exe with the option "install from local directory".
here are the packages I installed:
ash bison crypt file gcc gzip make tar
autoconf byacc cygwin fileutils gdb inetutils ncurses vim
automake bzip2 dejagnu findutils gperf less sed w32api
bash clear diff flex grep login setup.exe
binutils cpio expect gawk groff m4 sh-utils
BTW: in my case, setup.exe downloaded the src-package for each package
selected. how can you disable this ?
Want to unsubscribe from this list?
Check out: http://cygwin.com/ml/#unsubscribe-simple