• Libcurl交叉编译


    配置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呢?
    

    原因如下:

    1. 添加交叉编译器目录到PATH中是放在~/.bash_profile里的,这是用户的配置文件
    2. 执行make install时,加了sudo前缀,变成了root的工作环境和root的权限。
      根据以上两点,make install是在root下做的,而arm-linux-ranlib在用户的工作环境中才能找到。所以产生了这里的错误。

    那我既要取得root权限,又要具有当前用户的工作环境,该怎么办呢?
    解决如下:

    1. 方法一:执行make install之前,先用下su命令取得root权限。然后再执行make install。
    2. 方法二:修改交叉编译链环境变量为全局

    su 和 sudo 的区别:

    1. 共同点:都是root用户的权限;
    2. 不同点:su仅仅取得root权限,工作环境不变,还是在切换之前用户的工作环境;sudo是完全取得root的权限和root的工作环境。
  • 相关阅读:
    stm32 IAP + APP ==>双剑合一(转)
    ClassNotFoundException和NoClassDefFoundError的差别
    浏览器对文字的解析
    hive 配置注意事项及初始化hive 元数据
    移植MonkeyRunner的图片对照和获取子图功能的实现-Appium篇
    导出excel——弹出框
    机器学习类似度计算方法选择理论根据
    数据结构
    八.200多万元得到的创业教训--从3款产品学到的3点
    深圳市安卓工控设备有限公司简单介绍
  • 原文地址:https://www.cnblogs.com/ihid/p/9458534.html
Copyright © 2020-2023  润新知