一般而言,源码的安装共三个步骤:配置(configure)、编译(make)、安装(make install)。
https://blog.csdn.net/m0_37599645/article/details/116021781
https://blog.csdn.net/weixin_44498318/article/details/111414759
https://zhuanlan.zhihu.com/p/466365720
https://www.cnblogs.com/johnnyzen/p/13789760.html
https://blog.csdn.net/LK_whq/article/details/80012571
各个文件详解
https://blog.csdn.net/qq_35243382/article/details/132804995
可能会出现的问题
-
执行
aclocal
命令报macro
AM_PROG_LIBTOOL’ not found in library`
http://blog.chinaunix.net/uid-13830775-id-97623.html
我的情况就是没有安装libtool
库 -
执行命令’automake –add-missing’出现错误required file 'autoconf/ltmain.sh' not found
https://blog.csdn.net/x356982611/article/details/78771582
安装好libtool之后执行libtoolize --automake --copy --debug --force
-
configure: error: cannot find install-sh, install.sh, or shtool in "." "./.." "./../.."
https://www.cnblogs.com/Rainingday/p/12616235.html
执行autoreconf -vif
指令 -
Invalid configuration
aarch64-linux‘: machine
aarch64‘ not recognize
https://blog.csdn.net/pro_houjibofa/article/details/119462477 -
执行autoconf,出现autom4te: /usr/bin/m4 failed with exit status: 1错误
https://zhidao.baidu.com/question/164101241.html -
执行autoconf,configure.ac:9: error: possibly undefined macro: AM_INIT_AUTOMAKE
https://www.jianshu.com/p/4cb54203f6c4
需要严格执行autotool的流程,报错就解决再执行下一个命令。
更新配置文件:
wget -O config.guess 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD'
wget -O config.sub 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD'
- 其它问题
千万不要把一个已经用autoconf处理过的工程,再放到另外一个环境中重新编译,否则会有各种稀奇古怪的问题。
configure脚本常见的配置参数
http://t.zoukankan.com/lifexy-p-7866453.html(最常用)
https://blog.csdn.net/sinat_24143931/article/details/50819699(全)
-
--prefix
prefix的作用其它是指定安装目录,如果指定了,它将安装在指定的目录中。
如果不指定prefix,则可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/etc。其它的资源文件放在/usr /local/share。
区别在于如果要删除这个程序时候的麻烦程序,可以在原来的make目录下用一次make uninstall(前提是make文件指定过uninstall),要么去上述目录里面把相关的文件一个个手工删掉。
如果指定了prefix,只要删除指定的文件夹就可以了。
--prefix=$(pwd)/build-arm
,$(pwd)表示当前目录。 - --host
--host=aarch64-linux-gnu
与--host=arm-linux
的区别:#当编译器是arm-linux-gnueabihf时,host为编译器前两个词arm-linux ./configure --host=arm-linux CC=arm-linux-gnueabihd-gcc CXX=arm-linux-gnueabihf-g++ #当编译器是aarch64-linux-gnu-时,host为编译器前两个词aarch64-linux ./configure --host=aarch64-linux CC=aarch64-linux-gnu-gcc CXX=aarch-linux-gnu-g++ #若需要指定安装路径,请使用--prefix= 注意路径要使用局对路径 ./configure --host=aarch64-linux CC=aarch64-linux-gnu-gcc CXX=aarch-linux-gnu-g++ --prefix=/home/root/build
0 条评论