使用Cygwin在Windows下帮助编译众多C/C++库(附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,如图

再试一次./configure

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

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

时间: 2024-10-14 20:58:20

使用Cygwin在Windows下帮助编译众多C/C++库(附make: command not found,以及libtool.m4 and ltmain.sh have a version mismatch问题的解决方案)的相关文章

ACE在windows下的编译及配置(VS2010)

ACE在windows下的编译及配置(VS2010) 分类:             -[小西南]-              2013-08-06 16:17     2354人阅读     评论(6)     收藏     举报 目录(?)[+] 1 下载ACE 2 创建ACE的配置文件 3 编译ACE库 4 可为ACE目录设置环境变量 5 VS2010 ACE配置 6 测试操作是否成功 系统:win7 开发环境:Visual Studio 10 ACE版本:ACE-6.2.0 参考了很多师

Windows下VC编译OpenDDS

OpenDDS是一个OMG组织DDS标准的C++开源实现,OpenDDS同时也提供Java支持.OpenDDS依赖ACE抽象层来提供不同平台的兼容性,同时也依赖于TAO(例如TAO的IDL编译器).当前OpenDDS有ociweb ObjectComputing维护,官方网站http://www.opendds.org/.目前OpenDDS支持的平台有Windows,Linux family,Android,VxWorks等,可用的编译器包括VC,gcc,QNX gcc等. 1. OpenDDS

【FFmpeg】Windows下FFmpeg编译

转自:http://www.cnblogs.com/dwdxdy/p/3625766.html 由于FFmpeg是基于Linux开发的开源项目,源代码和Windows下最常见的Visual Studio提供的C/C++编译器不兼容,因此它不能使用MSVC++编译,需要在Windows下配置一个类似Linux的编译环境.本文主要记录Windows下FFmpeg编译的过程. 1.资源准备 准备编译过程所需的软件工具和源代码. (1). MinGW-MSYS Bundle http://sourcef

图文介绍windows下实现编译ffmpeg工程的详细步骤

本文来自:http://www.cuplayer.com/player/PlayerCode/FFmpeg/2014/0706/1401.html 图文介绍windows下实现编译ffmpeg工程的详细步骤: 1.搭建 MinGW 的编译环境 下载yasm,地址:http://yasm.tortall.net/Download.html 改名为yasm.exe放到C:\WINDOWS\system32 或者 C:\MinGW\msys\1.0\bin文件夹下. 下载 mingw-get-inst

windows下rabbitmq-c编译(带openssl、无需MinGW)

因为项目原因,需要使用到rabbitmq的c客户端库.首先,参见上一篇windows下openssl编译,如果已经使用cmake编译过了,则先delete cache(File-Delete Cache),否则原来的cmake缓存都在了,将仍然会出现原来的错误. 依次点击configire.generate,可以生成vs sln.如下: 最后使用VS即可生成rabbitmq.4.dll,如下: 测试自带的例子: D:\RabbitMQ Server\rabbitmq_server-3.6.5\s

Windows下PythonQt编译(vs2015+Qt5.11.2+PythonQt 3.2)

时间:2018年10月22日,学习任何物事都有个探索过程.欢迎留言探讨. 在Qt程序中,添加python进行混合编程,可以使用Python API,但交互起来很麻烦,不友好.网上推荐使用PythonQt框架. 强调下: PythonQt,方便Qt C++程序员,将python引入项目 PyQt PySide,给python程序员,将Qt界面引入项目 本机环境: 1.win7 64 旗舰版 2.Qt 5.11.2(MSVC 2015,32 bit) 3.Python 3.7.0 (32-bit)

Mac平台下的Qt程序在Windows下执行编译运行出现的中文乱码问题

Mac平台下的Qt程序在Windows下执行编译运行时,QString::asprintf()部分会出现的中文乱码问题,之前已经使用QStringLiteral宏解决了一个中文乱码问题: 但是此种情形单凭QStringLiteral宏解决不了. 原因: mac下采用MinGW编译,在Windows下可能是MinGW,也可能是MSV2017等VS编译器编译.如果win平台下是MinGW编译,在mac下写好的程序在win平台下运行不会出现乱码: 如果win下是MSV2017编译就会出现中文乱码,需要

Windows下wxWidgets编译错误的解决方法

Windows下wxWidgets编译错误的解决方法 转自 https://www.jianshu.com/p/b89d205f2cec 错误提示:d:\develop\audacity\wxwidgets-3.1.1\include\wx\platform.h(148): fatal error C1083: 无法打开包括文件: “wx/setup.h”: No such file or directory 解决方法:1.到D:\develop\audacity\wxWidgets-3.1.1

windows下的gsl(科学计算库)配置

一.GSL介绍 GNU科学计算函数库GSL(GNU Scientific Library)是一个强大的C/C++数值计算函数库,它是一个自由软件,是GNU项目软件的一个部分,遵循GPL协议.GSL是一个为C和C++程序员提供的科学数值运算库.该科学计算库异常强大,函数库提供了大量的数值计算程序,如随机函数.特殊函数和拟合函数等等,整个函数库大约有1000多个函数,几乎涵盖了科学计算的各个方面.提供了如下方面的支持: Complex Numbers          Roots of Polyno