zoukankan      html  css  js  c++  java
  • 【待完善】make: command not found,以及libtool.m4 and ltmain.sh have a version mismatch问题的解决方案

    之前为了使用一个库,都是去下载源码,然后根据开发者提供的README手动用GCC编译,一直不能使用Makefile感觉很蛋痛,比如最近使用的ZThread

    还是怪自己以前过于依赖IDE

    最近发现用Cygwin就可以使用诸如./configure, make这样的命令,感觉灰常欣喜,尝试去编译ZThread库(因为我发现虽然之前我用GCC手动编译了ZThread但是在使用的过程中,ZThread总是往控制台上打印诸多的DEBUG信息,想必是编译选项的问题,我又不知道到哪个头文件中去找#define DEBUG,所以就想使用make,看使用ZThread作者写的configuration文件以及Makefile来编译能不能解决问题)

    刚刚下载下来Cygwin就等着上去configure+make呢,问题就来了,输入./configure之后,等了一段时间报错(见红色文字):

    $ ./configure
    checking build system type... i686-pc-cygwin
    checking host system type... i686-pc-cygwin
    checking target system type... i686-pc-cygwin
    checking for a BSD-compatible install... /usr/bin/install -c
    checking whether build environment is sane... yes
    checking for gawk... gawk
    checking whether make sets $(MAKE)... yes
    Loading m4 macros from share
    checking for g++... g++
    checking for C++ compiler default output file name... a.exe
    checking whether the C++ compiler works... yes
    checking whether we are cross compiling... no
    checking for suffix of executables... .exe
    checking for suffix of object files... o
    checking whether we are using the GNU C++ compiler... yes
    checking whether g++ accepts -g... yes
    checking for style of include used by make... GNU
    checking dependency style of g++... gcc3
    checking for gcc... gcc
    checking whether we are using the GNU C compiler... yes
    checking whether gcc accepts -g... yes
    checking for gcc option to accept ANSI C... none needed
    checking dependency style of gcc... gcc3
    checking how to run the C preprocessor... gcc -E
    checking for egrep... grep -E
    checking for ANSI C header files... yes
    checking for sys/types.h... yes
    checking for sys/stat.h... yes
    checking for stdlib.h... yes
    checking for string.h... yes
    checking for memory.h... yes
    checking for strings.h... yes
    checking for inttypes.h... yes
    checking for stdint.h... yes
    checking for unistd.h... yes
    checking pthread.h usability... no
    checking pthread.h presence... no
    checking for pthread.h... no
    checking for sched_get_priority_max in -lrt... no
    checking for sched_yield... no
    checking for pthread_yield... no
    checking for pthread_key_create... no
    checking for pthread_keycreate... no
    checking for doxygen... no
    detecting for ftime() function
    checking sys/time.h usability... yes
    checking sys/time.h presence... yes
    checking for sys/time.h... yes
    checking for _ftime()... yes
    checking how to run the C++ preprocessor... g++ -E
    checking for ANSI C header files... (cached) yes
    checking errno.h usability... yes
    checking errno.h presence... yes
    checking for errno.h... yes
    checking for target implementation... compile-time guess
    checking for sigsetjmp()... no
    checking for _beginthreadex()... no
    checking for a sed that does not truncate output... /usr/bin/sed
    checking for ld used by gcc... d:/mingw/mingw32/bin/ld.exe
    checking if the linker (d:/mingw/mingw32/bin/ld.exe) is GNU ld... yes
    checking for d:/mingw/mingw32/bin/ld.exe option to reload object files... -r
    checking for BSD-compatible nm... /cygdrive/d/MinGW/bin/nm -B
    checking whether ln -s works... yes
    checking how to recognise dependent libraries... file_magic ^x86 archive import|^x86 DLL
    checking dlfcn.h usability... no
    checking dlfcn.h presence... no
    checking for dlfcn.h... no
    checking how to run the C++ preprocessor... g++ -E
    checking for g77... no
    checking for f77... no
    checking for xlf... no
    checking for frt... no
    checking for pgf77... no
    checking for fort77... no
    checking for fl32... no
    checking for af77... no
    checking for f90... no
    checking for xlf90... no
    checking for pgf90... no
    checking for epcf90... no
    checking for f95... no
    checking for fort... no
    checking for xlf95... no
    checking for ifc... no
    checking for efc... no
    checking for pgf95... no
    checking for lf95... no
    checking for gfortran... no
    checking whether we are using the GNU Fortran 77 compiler... no
    checking whether  accepts -g... no
    checking the maximum length of command line arguments... 8192
    checking command to parse /cygdrive/d/MinGW/bin/nm -B output from gcc object... ok
    checking for objdir... .libs
    checking for ar... ar
    checking for ranlib... ranlib
    checking for strip... strip
    checking for correct ltmain.sh version... grep: character class syntax is [[:space:]], not [:space:]
    no
    
    *** Gentoo sanity check failed! ***
    *** libtool.m4 and ltmain.sh have a version mismatch! ***
    *** (libtool.m4 = 1.5.10, ltmain.sh = ) ***
    
    Please run:
    
      libtoolize --copy --force
    
    if appropriate, please contact the maintainer of this
    package (or your distribution) for help.

    输入:libtoolize --copy --force提示libtoolize: command not found

    咋办?搜了一下相关的问题,原来是因为安装Cygwin的时候没有安装libtool

    重新运行Cygwin-setup(注意,无需卸载,重新运行setup,选择你没有安装的package即可),搜索libtool,勾选并安装,问题解决

    然后再次运行libtoolize --copy --force,又报错:

    $ libtoolize --copy --force
    libtoolize: putting auxiliary files in `.'.
    libtoolize: copying file `./ltmain.sh'
    libtoolize: You should add the contents of the following files to `aclocal.m4':
    libtoolize:   `/usr/share/aclocal/libtool.m4'
    libtoolize:   `/usr/share/aclocal/ltoptions.m4'
    libtoolize:   `/usr/share/aclocal/ltversion.m4'
    libtoolize:   `/usr/share/aclocal/ltsugar.m4'
    libtoolize:   `/usr/share/aclocal/lt~obsolete.m4'
    libtoolize: Consider adding `AC_CONFIG_MACRO_DIR([m4])' to configure.ac and
    libtoolize: rerunning libtoolize, to keep the correct libtool macros in-tree.
    libtoolize: Consider adding `-I m4' to ACLOCAL_AMFLAGS in Makefile.am.

    又搜了一下,在这篇BLOG说是因为没安装autoconf的原因,再回去安装autoconf,如图

    再试一次libtoolize --copy --force

    结果还是报同样的错误,回头去看(上面有图,就是libtool那张)原来是libtool-debuginfo和cygwin64-libtool没有安装

    于是安装libtool-debuginfo和cygwin64-libtool

    再试一次libtoolize --copy --force,成功运行

    好了,继续:./configure --prefix D:/ZThread/bin #--prefix指定编译时输出二进制文件的目录

    然后还是报错,又运行libtoolize --copy --force,还是报错,无语了

    然后,上网搜了半天,在这里找到提示说使用:autoreconf --force --install --symlink

    然后又报错Can't exec "aclocal"

    继续搜,在这里找到提示说要安装automake(然后我就去Cygwin-setup安装了automake-1.8,注意不要重复安装多个版本,否则会出问题)

    然后输入make install又提示make: command not found

    还是同样的套路,把make package给勾选安装就行了

  • 相关阅读:
    codeforces-1328F-Make k Equal
    codeforces-1327C-Game with Chips
    codeforces-1328E-Tree Queries
    深度学习(九):变分自编码器
    深度学习(八):概率生成模型
    深度学习(六):吉布斯采样
    深度学习(五):M-H采样
    深度学习(四):马尔科夫链蒙特卡洛采样(MCMC)
    深度学习(二):图模型的学习
    深度学习(一):概率图模型引入
  • 原文地址:https://www.cnblogs.com/qrlozte/p/4135847.html
Copyright © 2011-2022 走看看