support utf-8
cgdb github上的issues裏面有人提到了這個問題,維護者回復的是須要使用libncursesw
這個支持寬字符的庫來解決這個問題。linux
查看是否安裝了該庫ldconfig -p | grep libncursesw
,未安裝則查看有哪些庫:git
thomas@ubuntu:~$ apt search libncursesw Sorting... Done Full Text Search... Done `libncursesw5`/bionic-updates,now 6.1-1ubuntu1.18.04 amd64 shared libraries for terminal handling (wide character support) `libncursesw5-dbg`/bionic-updates 6.1-1ubuntu1.18.04 amd64 debugging/profiling libraries for ncursesw `libncursesw5-dev`/bionic-updates,now 6.1-1ubuntu1.18.04 amd64 developer's libraries for ncursesw
分別有三個,我當時選擇的是第一個libncursesw5
,進行了安裝,結果configure的時候檢測不到libncursesw,只檢測到了libncurses。對比目錄裏面的文件:github
thomas@ubuntu:/usr/lib/x86_64-linux-gnu$ ls /usr/lib/x86_64-linux-gnu/libncurses* -l -rw-r--r-- 1 root root 297196 May 23 2018 /usr/lib/x86_64-linux-gnu/libncurses.a -rw-r--r-- 1 root root 127016 May 23 2018 /usr/lib/x86_64-linux-gnu/libncurses++.a -rw-r--r-- 1 root root 31 May 23 2018 /usr/lib/x86_64-linux-gnu/libncurses.so
發現沒有libncursesw,ldconfig -p | grep libncursesw
:shell
thomas@ubuntu:/usr/lib/x86_64-linux-gnu$ ldconfig -p | grep libncursesw libncursesw.so.5 (libc6,x86-64) => /lib/x86_64-linux-gnu/libncursesw.so.5
並無libncursesw.so
, ld就找不到了。sudo apt install libncursesw5-dev
,安裝完開發者使用的庫,這時/usr/lib/x86_64-linux-gnu/目錄下才出現libncursesw.so
。這時再configure,顯示使用的再也不是libncurses,而是libncursesw。make,make install。運行完美支持utf-8。ubuntu
以上囉嗦一大堆,直接說sudo apt install libncursesw5-dev
,問題解決。可是少了解決問題的過程和思路。在這個過程當中,有兩個問題要理清。vim
libxx只包含了基本的運行時,若是隻需運行軟件,不用編譯軟件,安裝這個。ionic
libxx-dev包含了運行時和頭文件和其餘庫文件,若是編譯其餘軟件須要連接這個庫,安裝這個。ide
libxx-dbg包含了運行時和頭文件和其餘庫文件,以及調試信息。debug
由於這裏我須要從源碼編譯cgdb,因此就須要選擇libncursesw-dev調試
ld爲何不連接libxx.so.nn?
首先得讓ld找的到,能夠看
vim /etc/ld.so.conf
,/etc/ld.so.conf
內容是:
include /etc/ld.so.conf.d/.conf
/etc/ld.so.conf.d/.conf這些文件就描述了ld搜索庫時會搜索的目錄。編譯時使用的是-lncursesw,那麼ld只會在這些目錄下搜索libncursesw.so這個文件。注意是libxx.so,/lib/x86_64-linux-gnu/libncursesw.so.5雖然在搜索目錄中,可是不知足後綴爲.so。若是要強制使用它,則直接把它做爲目標文件便可:
gcc a.o /lib/x86_64-linux-gnu/libncursesw.so.5 -o a