Compiler errors SOX:安装libmad make[1]:***[all recursive]错误1&;make:**[全部]错误2
我希望你能帮助我。我想在我的系统上安装libmad和madplay,以便SOX能够解码mp3文件 我的系统: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
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