Compiling

如何編譯 LESS 尋呼機?

  • April 5, 2019

我想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.debyourarch可能是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 -nand dch -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 來回答這些問題)。

引用自:https://unix.stackexchange.com/questions/468215