• python build from source


    _bz2 build Failed

    在使用从源码构建的bzip2时,若出现如下错误

    building '_bz2' extension
    gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/cty-devops/packages/Python-3.8.7/Include -I/home/cty-devops/packages/Python-3.8.7 -c /home/cty-devops/packages/Python-3.8.7/Modules/_bz2module.c -o build/temp.linux-x86_64-3.8/home/cty-devops/packages/Python-3.8.7/Modules/_bz2module.o
    gcc -pthread -shared build/temp.linux-x86_64-3.8/home/cty-devops/packages/Python-3.8.7/Modules/_bz2module.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lbz2 -o build/lib.linux-x86_64-3.8/_bz2.cpython-38-x86_64-linux-gnu.so
    /usr/bin/ld: /usr/local/lib/libbz2.a(bzlib.o): relocation R_X86_64_32S against `BZ2_crc32Table' can not be used when making a shared object; recompile with -fPIC
    /usr/local/lib/libbz2.a: error adding symbols: Bad value
    collect2: error: ld returned 1 exit status
    

     重新安装bzip2

    cd bzip2-1.0.6/
    
    # 替换makefile中的CC=gcc为CC=gcc -fPIC
    vim MakeFile
    vim Makefile-libbz2_so
    
    make && make install  

    参考https://stackoverflow.com/questions/63326781/usr-local-lib-libbz2-a-could-not-read-symbols-bad-value

    Openssl更新

    build时需要更新openssl

    Could not build the ssl module!
    Python requires an OpenSSL 1.0.2 or 1.1 compatible libssl with X509_VERIFY_PARAM_set1_host().
    LibreSSL 2.6.4 and earlier do not provide the necessary APIs, https://github.com/libressl-portable/portable/issues/381

    下载 openssl 源码 https://github.com/openssl/openssl/releases

    unzip openssl-OpenSSL_1_1_1i.zip
    cd openssl-OpenSSL_1_1_1i
    ./config shared
    make
    make install
    mkdir lib
    cp ./*.{so,so.1.1,a,pc} ./lib
    
    cd /your_python_source_code
    export LD_LIBRARY_PATH=/path/to/openssl-OpenSSL_1_1_1i/lib:$LD_LIBRARY_PATH
    
    LDFLAGS="-L/path/to/openssl-OpenSSL_1_1_1i/lib" ./configure (all your preferred options) --with-openssl=/path/to/openssl-OpenSSL_1_1_1i
    make
    make altinstall

      参考https://stackoverflow.com/questions/53543477/building-python-3-7-1-ssl-module-failed

    若出现

    File "/usr/local/lib/python3.8/ssl.py", line 98, in <module>
        import _ssl             # if we can't import it, let the error propagate
    ImportError: libssl.so.1.1: cannot open shared object file: No such file or directory
    

      在/etc/ld.so.conf中加入/path/to/openssl-OpenSSL_1_1_1i/lib

    echo "/path/to/openssl-OpenSSL_1_1_1i/lib" >> /etc/ld.so.conf
    ldconfig -v

    若出现uwsgi无法编译报ssl相关错误,尝试删除yum安装的openssl-devel  

     yum remove openssl-devel
    

      (参考https://blog.csdn.net/rongDang/article/details/102871874

  • 相关阅读:
    深拷贝浅拷贝的探索以及实现
    Vue之动态class写法总结
    hh
    90%的新媒体人都在用的标题套路!
    研究999篇100W+爆款文,标题之总结
    想突破10w+?先过了这一关……
    易撰数据分析,做精准爆文分析!
    清除.bat
    截图.bat
    Git 学习笔记(二)分支管理
  • 原文地址:https://www.cnblogs.com/QQQmadNULL/p/14340149.html
Copyright © 2020-2023  润新知