include $(GOROOT)/src/Make.inc
TARG=gocurses
CGOFILES=gocurses.go
CGO_LDFLAGS=-lncurses
include $(GOROOT)/src/Make.pkg
CLEANFILES+=main
main: install main.go
$(GC) main.go
$(LD) -o $@ main.$O
Next, linking to ncurses via cgo currently does not work as a result of Issue 667. 6g spits out an "invalid recursive type" error and compilation fails. There is a way to work around this, however.
The file where the error occurs is _cgo_gotypes.go. In it is defined the go equivalents for the C types exposed in ncurses.h. The problem occurs where WINDOW is defined. If it is defined below the _win_st struct, 6g spits the error. If it is defined above _win_st, everything goes well. Fortunately, cgo will not recreate any files it generates as long as the original source file is unaltered. This allows us to modify any of those generated files and call make main again in order to continue building the project.
With that in mind, the fix is simple:
- Run make main and see the error
- Open _cgo_gotypes.go and move the line defining _Ctypedef_WINDOW to above _Ctype_struct__win_st
- Run make main again
The program should work from there.
No comments:
Post a Comment