配置configure
./configure --build=arm --host=mipsel-openwrt-linux --prefix=/usr/local/curl
执行make
make
取得su权限
su
开始安装
make install
踩坑总结
如果执行sudo make install,会出现以下错误
[ihid@VM_11_5_centos curl-7.61.0]$ sudo make install
[sudo] password for ihid:
Making install in lib
make[1]: Entering directory `/home/ihid/curl-7.61.0/lib'
make[2]: Entering directory `/home/ihid/curl-7.61.0/lib'
/usr/bin/mkdir -p '/usr/local/curl/lib'
/bin/sh ../libtool --mode=install /usr/bin/install -c libcurl.la '/usr/local/curl/lib'
libtool: install: /usr/bin/install -c .libs/libcurl.so.4.5.0 /usr/local/curl/lib/libcurl.so.4.5.0
libtool: install: (cd /usr/local/curl/lib && { ln -s -f libcurl.so.4.5.0 libcurl.so.4 || { rm -f libcurl.so.4 && ln -s libcurl.so.4.5.0 libcurl.so.4; }; })
libtool: install: (cd /usr/local/curl/lib && { ln -s -f libcurl.so.4.5.0 libcurl.so || { rm -f libcurl.so && ln -s libcurl.so.4.5.0 libcurl.so; }; })
libtool: install: /usr/bin/install -c .libs/libcurl.lai /usr/local/curl/lib/libcurl.la
libtool: install: /usr/bin/install -c .libs/libcurl.a /usr/local/curl/lib/libcurl.a
libtool: install: chmod 644 /usr/local/curl/lib/libcurl.a
libtool: install: mipsel-openwrt-linux-ranlib /usr/local/curl/lib/libcurl.a
../libtool: line 1818: mipsel-openwrt-linux-ranlib: command not found
make[2]: *** [install-libLTLIBRARIES] Error 127
make[2]: Leaving directory `/home/ihid/curl-7.61.0/lib'
make[1]: *** [install-am] Error 2
make[1]: Leaving directory `/home/ihid/curl-7.61.0/lib'
make: *** [install-recursive] Error 1
在终端检查,发现arm-linux-ranlib可以在系统的PATH中找到,因为已经把交叉编译链添加到了PATH中。
那为什么还提示说找不到arm-linux-ranlib呢?
原因如下:
- 添加交叉编译器目录到PATH中是放在~/.bash_profile里的,这是用户的配置文件
- 执行make install时,加了sudo前缀,变成了root的工作环境和root的权限。
根据以上两点,make install是在root下做的,而arm-linux-ranlib在用户的工作环境中才能找到。所以产生了这里的错误。
那我既要取得root权限,又要具有当前用户的工作环境,该怎么办呢?
解决如下:
- 方法一:执行make install之前,先用下su命令取得root权限。然后再执行make install。
- 方法二:修改交叉编译链环境变量为全局
su 和 sudo 的区别:
- 共同点:都是root用户的权限;
- 不同点:su仅仅取得root权限,工作环境不变,还是在切换之前用户的工作环境;sudo是完全取得root的权限和root的工作环境。