我正在尝试在 Ubuntu 16.04 版本上安装 ChkTex。为此,我下载了手册和软件。我目前正在关注安装手册。但是,当我尝试使用该命令时make
,它给出了以下错误:
gcc -lpcreposix -lpcre -o chktex ChkTeX.o FindErrs.o OpSys.o Resource.o Utility.o -ltermcap
FindErrs.o: In function `CheckSilentRegex':
/home/mala/Downloads/chktex-1.7.6/FindErrs.c:1256: undefined reference to `pcreposix_regcomp'
/home/mala/Downloads/chktex-1.7.6/FindErrs.c:1277: undefined reference to `pcreposix_regexec'
/home/mala/Downloads/chktex-1.7.6/FindErrs.c:1288: undefined reference to `pcreposix_regerror'
/home/mala/Downloads/chktex-1.7.6/FindErrs.c:1261: undefined reference to `pcreposix_regerror'
FindErrs.o: In function `CheckRest':
/home/mala/Downloads/chktex-1.7.6/FindErrs.c:920: undefined reference to `pcreposix_regexec'
/home/mala/Downloads/chktex-1.7.6/FindErrs.c:931: undefined reference to `pcreposix_regerror'
/home/mala/Downloads/chktex-1.7.6/FindErrs.c:878: undefined reference to `pcreposix_regcomp'
/home/mala/Downloads/chktex-1.7.6/FindErrs.c:885: undefined reference to `pcreposix_regerror'
collect2: error: ld returned 1 exit status
Makefile:160: recipe for target 'chktex' failed
make: *** [chktex] Error 1
错误的原因是什么?我该如何消除它?
答案1
首先,请注意chktex(1.7.4-1ubuntu2)可从 Universe 存储库获取适用于 Ubuntu 16.04 的版本。
该错误似乎是因为相关库在命令行中放置不正确gcc
- 请参阅为什么库的链接顺序有时会导致 GCC 出现错误?
深入挖掘,可以追溯到显然被添加到LDFLAGS
而不是LIBS
LIBS=-ltermcap -lpcreposix -lpcre
LDFLAGS=-lpcreposix -lpcre
所以食谱
chktex: $(OBJS)
$(CC) $(LDFLAGS) -o chktex $(OBJS) $(LIBS)
扩展为
gcc -lpcreposix -lpcre -o chktex ChkTeX.o FindErrs.o OpSys.o Resource.o Utility.o -ltermcap
而不是所需的
gcc -o chktex ChkTeX.o FindErrs.o OpSys.o Resource.o Utility.o -ltermcap -lpcreposix -lpcre
您可以通过手动编辑 Makefile 来解决此问题,将行更改为
LIBS=-ltermcap -lpcreposix -lpcre
LDFLAGS=