欢迎光临散文网 会员登陆 & 注册

在Ubuntu用ncurses库写个文件,编译出能用于Windows的可执行文件(程序)

2023-01-04 22:46 作者:傅红雪的刀  | 我要投稿

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/


在Ubuntu用ncurses库写个文件,编译出能用于Windows的可执行文件(程序)的评论 (共 条)

分享到微博请遵守国家法律