如何編譯 LESS 尋呼機?
我想
less
用最新的修復程序進行編譯。我這樣做:
git clone https://github.com/gwsw/less cd less/ autoheader autoconf ./configure make
但是
make
這樣說:make: *** No rule to make target 'funcs.h', needed by 'main.o'. Stop.
沒有 Makefile 規則可以創建
funcs.h
那麼,如何
less
從原始碼編譯呢?
正如Thomas Dickey 的回答中所解釋的,git 儲存庫需要先進行準備,然後才能用於建構,並且無法使用提供的文件重新創建一個必需的文件。
要減少建構,請下載其最新版本的 tarball並建構:
wget http://greenwoodsoftware.com/less/less-530.tar.gz tar xf less-530.tar.gz cd less-530 ./configure && make
但是請注意,版本 530 有一些煩人的錯誤已在 git 儲存庫中修復。(這可能是 Debian 軟體包沒有更新的原因。)
或者,您可以更新 Debian 軟體包:
sudo apt build-dep less sudo apt install devscripts apt source less cd less-487 uscan cd .. tar xf less_530.orig.tar.gz cd less-530 cp -a ../less-487/debian . dch -v 530-0.1 "New upstream release." dch -r ignored debuild -uc -uc
這將產生一個
less_530-0.1_yourarch.deb
(yourarch
可能是amd64
),您可以使用sudo dpkg -i
. 正如JdeBP 指出的那樣,這將確保應用 Debian 更新檔,並使用適當的configure
選項;它還將為您提供使用軟體包而不是手動安裝的好處。對於
gbp
像我這樣的粉絲,以下配方使用了一個 git 儲存庫,這使得任何更改都更加明顯:sudo apt build-dep less sudo apt install devscripts git-buildpackage gbp import-dsc --pristine-tar apt://less/sid cd less gbp import-orig --pristine-tar --uscan dch -v 530-0.1 "New upstream release." dch -r ignored gbp buildpackage -us -uc --git-ignore-new
(在這兩種情況下,嚴格來說,您應該使用
dch -n
anddch -v
,或者至少將“非維護者上傳”添加到更改日誌中,但以複製粘貼的方式更難做到這一點。)
**“Makefile.in”是“configure”的輸入,它生成“Makefile”。您無需在 make 命令中指定“Makefile”。所以這應該更好地工作:
./configure make
(儘管您可能在該目錄中留下了應該在重新執行配置之前刪除的文件)。
從 git 執行,您缺少諸如configure之類的****分發文件。如果您安裝了合適版本的 autoconf,則必須首先執行來準備建構
autoconf
但是,git 樹也省略了“defines.h.in”——需要更多準備:git 中的文件似乎都與所需的模板不匹配。您可能可以重用發布 tar-ball 中的相應文件,儘管這不可靠(與任何其他源文件一樣,它會更改)。由於文件未提及此步驟,因此向開發人員報告錯誤可能會有所幫助。
修改後的問題詢問**
funcs.h
,可以使用Makefile.aut
(*“Makefile for authoring less”中的規則創建,根據文件頂部的評論)。但是截至 2018/09/17,仍然沒有創建規則defines.h.in
*(使用 grep 來回答這些問題)。