在Ubuntu用ncurses库写个文件,编译出能用于Windows的可执行文件(程序)
Curses是一款终端内绘制简单的图形用户界面,它的自由行软件版本ncurses,它的允许用户编写基于文本的用户界面(TUI)的编程库。虽然现在图形化界面有QT、MFC和Tcl/Tk等已经非常强大,文本的用户界面深深吸入着我。
最开始在Windows上使用却没有找到编译和运行的方法(当我写本文章佛想到一个解决方案),网上的资料指向Liunx内核的发行版系统一般带有ncurses的库,我想应该能够轻松的完成编译和运行,所以转移到Ubuntu程序的编译和运行尝试,同时希望在Ubuntu交叉编译编译出适合Windows的程序。
Ubuntu编译和运行
还是需要下载ncurses的开发库,还需安装运行库:sudo apt-get install libncurses5-dev。
根据教程“NCURSES-Programming-HOWTO ”(附录有链接),下载教程的源码,根据说明进行make。
简单的创建文件,引入头文件:ncurses.h ,简单编译实例1:gcc main.c -lncurses ,简单编译实例2:gcc main.c -curses。
记得后面的链接库:LIBS=-lncurses,否者会undefined reference(未定义引用)
Ubuntu交叉编译编译出适合Windows的程序
先是需要个交叉编译器,我能够想到是 mingw-w64,针对32位和64位Windows的开发环境,所以安装apt install mingw-w64。
没有找到合适的资料,碰巧在ncurses网站看到mingw64.zip,下载后内部有dll和头文件,经过尝试可行,所以有了本文。
ncurses Windows 动态链接库:https://invisible-island.net/archives/ncurses/win32/
-I./include/ncursesw -I./include/,有些头文件夹在./include/ncursesw,有些在./include/ 。如ncurses.h 包含有<ncursesw/ncurses_dll.h>
-L./lib/ -lncursesw.dll,必要的库链接,解决__imp_initscr和__imp_printw等缺少,生成a.exe。
完整的指令参考下方,这里文件夹的放置也有关系,完成头文件和必要的库链接,从而完成编译。
编译出来的a.exe,移动到Windows平台,然后和bin文件夹的libncursesw6.dll共同存在可运行。

总结
整体写的比较混乱,本文主要说明 Ubuntu用ncurses函数库写程序,在有合适的动态库编译能出用于Windows的程序。
附录
ncurses网站
https://invisible-island.net/ncurses/announce.html
NCURSES-Programming-HOWTO 教程说明
https://tldp.org/HOWTO/html_single/NCURSES-Programming-HOWTO/
https://www.cs.buap.mx/~hilda/NCURSES.pdf
新疆大学软件学院 NCURSES-Programming-HOWTO 第二版的翻译
https://max.book118.com/html/2016/0328/38997697.shtm
NCURSES-Programming-HOWTO 源码
http://www.tldp.org/HOWTO/NCURSES-Programming-HOWTO/ncurses_programs.tar.gz
mingw-w64 编译器网站
https://www.mingw-w64.org/
ncurses Windows 动态链接库
https://invisible-island.net/archives/ncurses/win32/