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
소스 코드에서 컴파일하는 방법은 무엇입니까?
답변1
설명된 대로토마스 디키의 답변, 빌드에 사용하기 전에 git 저장소를 준비해야 하며, 제공된 파일을 사용하여 필수 파일 중 하나를 다시 생성할 수 없습니다.
빌드를 줄이려면 다운로드하세요.최신 버전의 타르볼그리고 빌드:
wget http://greenwoodsoftware.com/less/less-530.tar.gz
tar xf less-530.tar.gz
cd less-530
./configure && make
하지만 버전 530에는짜증나는 버그이는 git 저장소에 고정되어 있습니다. (아마도 데비안 패키지가 아직 업데이트되지 않은 이유일 것입니다.)
또는 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
제이드 BP 지적, 이렇게 하면 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
및 를 사용 dch -v
하거나 적어도 "Non-maintainer upload."를 변경 로그에 추가해야 하지만 복사하여 붙여넣기가 가능한 방식으로는 어렵습니다.)
답변2
"Makefile.in"입력입니다"구성", 이는"파일 생성". make 명령에서 "Makefile"을 지정할 필요가 없습니다. 따라서 이것이 더 잘 작동할 것입니다:
./configure
make
(이 디렉터리에 구성을 다시 실행하기 전에 삭제해야 하는 파일이 남아 있을 수도 있습니다).
git에서 실행하면 놓쳤습니다분배하다다음과 같은 파일구성. 적절한 버전의 autoconf가 설치되어 있는 경우 먼저 다음을 실행하여 빌드를 준비해야 합니다.
autoconf
그러나 git 트리에는 "defines.h.in"도 생략되어 있습니다. 더 많은 준비가 필요합니다. git의 파일 중 어느 것도 필수 템플릿과 일치하지 않는 것 같습니다. 너가능한배포판 tarball에서 해당 파일을 재사용하는 기능은 신뢰할 수 없지만(다른 소스 파일과 마찬가지로 변경됨). 문서에는 이 단계가 언급되어 있지 않으므로 개발자에게 버그를 보고하는 것이 도움이 될 수 있습니다.
수정된 질문은 다음에 대해 묻습니다.funcs.h
, 다음 규칙을 사용하여 생성할 수 있습니다.Makefile.aut
("Makefile 생성을 줄입니다", 파일 상단의 설명에 따르면). 그러나 2018년 9월 17일 현재 아직 제정될 규정은 없습니다.defines.h.in
(이러한 질문에 답하려면 grep을 사용하세요.)
답변3
방금 Ubuntu 18.04에서 성공적으로 사용한 내용은 다음과 같습니다.
git clone https://github.com/gwsw/less.git
cd less
autoreconf -i
#autoconf
아직 패키지가 설치되지 않은 경우make -f Makefile.aut dist
그러면 및 가 release/less-550
포함된 디렉토리가 생성됩니다 . 그것은 또한 내 시스템에 걸려서 다른 창에서 프로세스를 종료했습니다. 프로세스를 직접 종료할 수도 있습니다 .less-550.tar.gz
less-550.zip
less-550.tar.gz
gpg --detach-sign ...
make
less-550.tar.gz
평소대로 설치할 수 있는 표준 빌드 가능한 소스 tarball입니다.
tar xf less-550.tar.gz
cd less-550
./configure --prefix=
디렉토리 다른 옵션make
make install
가장 흥미로운 옵션은 ./configure
아마도 다음과 같습니다.
--with-regex=LIB select regular expression library
(LIB is one of
auto,none,gnu,pcre,pcre2,posix,
regcmp,re_comp,regcomp,regcomp-local) [auto]
--with-editor=PROGRAM use PROGRAM as the default editor [vi]
./configure --help
전체 옵션 목록을 보려면 실행하세요 .
답변4
이 순서는 작업을 수행하지만 올바른지 확실하지 않습니다.
git clone https://github.com/gwsw/less
cd less/
autoheader
autoconf
./configure
make -f Makefile.aut funcs.h
make
make -f Makefile.aut less.nro
make -f Makefile.aut lesskey.nro
make -f Makefile.aut lessecho.nro
make install