Compiler errors SOX:安装libmad make[1]:***[all recursive]错误1&;make:**[全部]错误2

Compiler errors SOX:安装libmad make[1]:***[all recursive]错误1&;make:**[全部]错误2,compiler-errors,makefile,redhat,sox,Compiler Errors,Makefile,Redhat,Sox,我希望你能帮助我。我想在我的系统上安装libmad和madplay,以便SOX能够解码mp3文件 我的系统: cat /proc/version Linux version 3.4.76-65.111.amzn1.i686 (mockbuild@gobi-build-31003) (gcc version 4.6.3 20120306 (Red Hat 4.6.3-2) (GCC) ) #1 SMP Tue Jan 14 21:06:12 UTC 2014 我所做的: 下载: [user@i

我希望你能帮助我。我想在我的系统上安装libmad和madplay,以便SOX能够解码mp3文件

我的系统:

cat /proc/version
Linux version 3.4.76-65.111.amzn1.i686 (mockbuild@gobi-build-31003) 
(gcc version 4.6.3 20120306 (Red Hat 4.6.3-2) (GCC) )
#1 SMP Tue Jan 14 21:06:12 UTC 2014
我所做的:

下载:

[user@ip ~]$ wget ftp://ftp.mars.org/pub/mpeg/libmad-0.15.1b.tar.gz
    --2014-01-25 15:50:40--  ftp://ftp.mars.org/pub/mpeg/libmad-0.15.1b.tar.gz
               => ‘libmad-0.15.1b.tar.gz’
    Resolving ftp.mars.org (ftp.mars.org)... 216.75.62.9, 2001:470:8398:101::1
    Connecting to ftp.mars.org (ftp.mars.org)|216.75.62.9|:21... connected.
    Logging in as anonymous ... Logged in!
    ==> SYST ... done.    ==> PWD ... done.
    ==> TYPE I ... done.  ==> CWD (1) /pub/mpeg ... done.
    ==> SIZE libmad-0.15.1b.tar.gz ... 502379
    ==> PASV ... done.    ==> RETR libmad-0.15.1b.tar.gz ... done.
    Length: 502379 (491K) (unauthoritative)

    100%[=======================================>] 502,379     1.29MB/s   in 0.4s

    2014-01-25 15:50:41 (1.29 MB/s) - ‘libmad-0.15.1b.tar.gz’ saved [502379]
拆包

[user@ip ~]$ gunzip libmad-0.15.1b.tar.gz
[user@ip ~]$ tar xfv libmad-0.15.1b.tar
./configure(我知道这很重要,也不知道是否相关,但我会针对我遇到的错误给出一次)

如果我想用“make”编译它,我会得到以下错误:

[ec2-user@ip-172-31-7-175 libmad-0.15.1b]$ make
(sed -e '1s|.*|/*|' -e '1b' -e '$s|.*| */|' -e '$b'  \
                -e 's/^.*/ *&/' ./COPYRIGHT; echo;  \
        echo "# ifdef __cplusplus";  \
        echo 'extern "C" {';  \
        echo "# endif"; echo;  \
        if [ ".-DFPM_INTEL" != "." ]; then  \
                echo ".-DFPM_INTEL" | sed -e 's|^\.-D|# define |'; echo;  \
        fi;  \
        sed -ne 's/^# *define  *\(HAVE_.*_ASM\).*/# define \1/p'  \
                config.h; echo;  \
        sed -ne 's/^# *define  *OPT_\(SPEED\|ACCURACY\).*/# define OPT_\1/p'  \
                config.h; echo;  \
        sed -ne 's/^# *define  *\(SIZEOF_.*\)/# define \1/p'  \
                config.h; echo;  \
        for header in version.h fixed.h bit.h timer.h stream.h frame.h synth.h decoder.h; do  \
                echo;  \
                sed -n -f ./mad.h.sed ./$header;  \
        done; echo;  \
        echo "# ifdef __cplusplus";  \
        echo '}';  \
        echo "# endif") >mad.h
make  all-recursive
make[1]: Entering directory `/home/ec2-user/libmad-0.15.1b'
make[2]: Entering directory `/home/ec2-user/libmad-0.15.1b'
if /bin/sh ./libtool --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_INTEL  DASO_ZEROCHECK    -Wall -march=i486 -g -O -fforce-mem -fforce-addr -fthread-jump  -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fsche ule-insns2 -fstrength-reduce -MT version.lo -MD -MP -MF ".deps/version.Tpo" -c -  version.lo version.c; \
        then mv -f ".deps/version.Tpo" ".deps/version.Plo"; else rm -f ".deps/ve sion.Tpo"; exit 1; fi
mkdir .libs
 gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_INTEL -DASO_ZEROCHECK -Wall -march=i486 -  -O -fforce-mem -fforce-addr -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -fstrength-reduce -MT vers on.lo -MD -MP -MF .deps/version.Tpo -c version.c  -fPIC -DPIC -o .libs/version.o
cc1: error: unrecognized command line option '-fforce-mem'
make[2]: *** [version.lo] Error 1
make[2]: Leaving directory `/home/ec2-user/libmad-0.15.1b'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/ec2-user/libmad-0.15.1b'
make: *** [all] Error 2

看起来代码很旧。
-fforce mem
选项在GCC中已多年不受支持。例如,请参见

如果您只是想让它正常工作,我建议您查看
Makefile
文件中对
-fforce mem
的引用,然后删除该标志。请注意,每次重新运行
configure
时,您都必须再次执行此操作,因为
Makefile
文件将被重新创建

如果你想“真正”修复它,你必须在autoconf和automake文件中找到使用它的地方,然后从那里删除它


我还发现非常奇怪的是,代码迫使体系结构成为
i486
,这真的很旧,而且速度会慢得多。除非你真的有一个
i486
,我觉得这在2014年是不太可能的。

真的很感谢我删除了
optimize=“$optimize-fforce mem
文件
configure
configure.ac
中的一行,它解决了我的问题。
[ec2-user@ip-172-31-7-175 libmad-0.15.1b]$ make
(sed -e '1s|.*|/*|' -e '1b' -e '$s|.*| */|' -e '$b'  \
                -e 's/^.*/ *&/' ./COPYRIGHT; echo;  \
        echo "# ifdef __cplusplus";  \
        echo 'extern "C" {';  \
        echo "# endif"; echo;  \
        if [ ".-DFPM_INTEL" != "." ]; then  \
                echo ".-DFPM_INTEL" | sed -e 's|^\.-D|# define |'; echo;  \
        fi;  \
        sed -ne 's/^# *define  *\(HAVE_.*_ASM\).*/# define \1/p'  \
                config.h; echo;  \
        sed -ne 's/^# *define  *OPT_\(SPEED\|ACCURACY\).*/# define OPT_\1/p'  \
                config.h; echo;  \
        sed -ne 's/^# *define  *\(SIZEOF_.*\)/# define \1/p'  \
                config.h; echo;  \
        for header in version.h fixed.h bit.h timer.h stream.h frame.h synth.h decoder.h; do  \
                echo;  \
                sed -n -f ./mad.h.sed ./$header;  \
        done; echo;  \
        echo "# ifdef __cplusplus";  \
        echo '}';  \
        echo "# endif") >mad.h
make  all-recursive
make[1]: Entering directory `/home/ec2-user/libmad-0.15.1b'
make[2]: Entering directory `/home/ec2-user/libmad-0.15.1b'
if /bin/sh ./libtool --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_INTEL  DASO_ZEROCHECK    -Wall -march=i486 -g -O -fforce-mem -fforce-addr -fthread-jump  -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fsche ule-insns2 -fstrength-reduce -MT version.lo -MD -MP -MF ".deps/version.Tpo" -c -  version.lo version.c; \
        then mv -f ".deps/version.Tpo" ".deps/version.Plo"; else rm -f ".deps/ve sion.Tpo"; exit 1; fi
mkdir .libs
 gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_INTEL -DASO_ZEROCHECK -Wall -march=i486 -  -O -fforce-mem -fforce-addr -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -fstrength-reduce -MT vers on.lo -MD -MP -MF .deps/version.Tpo -c version.c  -fPIC -DPIC -o .libs/version.o
cc1: error: unrecognized command line option '-fforce-mem'
make[2]: *** [version.lo] Error 1
make[2]: Leaving directory `/home/ec2-user/libmad-0.15.1b'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/ec2-user/libmad-0.15.1b'
make: *** [all] Error 2