在Ubuntu用ncurses庫寫個文件,編譯出能用于Windows的可執(zhí)行文件(程序)
Curses是一款終端內(nèi)繪制簡單的圖形用戶界面,它的自由行軟件版本ncurses,它的允許用戶編寫基于文本的用戶界面(TUI)的編程庫。雖然現(xiàn)在圖形化界面有QT、MFC和Tcl/Tk等已經(jīng)非常強大,文本的用戶界面深深吸入著我。
最開始在Windows上使用卻沒有找到編譯和運行的方法(當我寫本文章佛想到一個解決方案),網(wǎng)上的資料指向Liunx內(nèi)核的發(fā)行版系統(tǒng)一般帶有ncurses的庫,我想應該能夠輕松的完成編譯和運行,所以轉(zhuǎn)移到Ubuntu程序的編譯和運行嘗試,同時希望在Ubuntu交叉編譯編譯出適合Windows的程序。
Ubuntu編譯和運行
還是需要下載ncurses的開發(fā)庫,還需安裝運行庫:sudo apt-get install libncurses5-dev。
根據(jù)教程“NCURSES-Programming-HOWTO?”(附錄有鏈接),下載教程的源碼,根據(jù)說明進行make。
簡單的創(chuàng)建文件,引入頭文件:ncurses.h??,簡單編譯實例1:gcc main.c -lncurses?,簡單編譯實例2:gcc main.c -curses。
記得后面的鏈接庫:LIBS=-lncurses,否者會undefined reference(未定義引用)
Ubuntu交叉編譯編譯出適合Windows的程序
先是需要個交叉編譯器,我能夠想到是 mingw-w64,針對32位和64位Windows的開發(fā)環(huán)境,所以安裝apt install mingw-w64。
沒有找到合適的資料,碰巧在ncurses網(wǎng)站看到mingw64.zip,下載后內(nèi)部有dll和頭文件,經(jīng)過嘗試可行,所以有了本文。
ncurses Windows?動態(tài)鏈接庫: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。
完整的指令參考下方,這里文件夾的放置也有關(guān)系,完成頭文件和必要的庫鏈接,從而完成編譯。
編譯出來的a.exe,移動到Windows平臺,然后和bin文件夾的libncursesw6.dll共同存在可運行。

總結(jié)
整體寫的比較混亂,本文主要說明 Ubuntu用ncurses函數(shù)庫寫程序,在有合適的動態(tài)庫編譯能出用于Windows的程序。
附錄
ncurses網(wǎng)站
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 編譯器網(wǎng)站
https://www.mingw-w64.org/
ncurses Windows 動態(tài)鏈接庫
https://invisible-island.net/archives/ncurses/win32/