一、C_base——linux基本操作

【1】

         VMware:虚拟机
         ubuntu:linux操作系统

【2】文件颜色

    1、蓝色        目录
    2、白色        普通文件
    3、红色        压缩
    4、绿色        可执行文件
    5、青色        软链接

【3】

    1---    ls          //查看文件
        ls -l           //以详细信息显示文件
        ls -a           //显示所有文件(包括隐藏文件)


    2---    cd ..           //切换到上一级
        cd          //直接切换到家目录(~)
        cd -            //切换到上一次路径
        cd /            //切换到根目录


    3---    touch   文件名     //创建文件


    4--- 
        mkdir  目录名      //创建目录



    5---    rm   普通文件
        rm   目录      -rf    //-r:递归删除

【4】

    ~              //家目录,主目录
    /               //根目录(一切文件的起源)

    $                  //表示普通用户权限
    #                   //管理员权限,不建议使用

【5】VIM编辑器

    vi 文件名

    1--- 输入模式
        i
        A   //行尾
        I   //行首
        o   //下面新增一行
        O   //上面新增一行

    2--- 命令模式
        yy      //复制
        p       //粘贴
        dd      //剪切(删除)
        u       //撤销
        ctrl + r    //反撤销
        gg      //顶行
        G       //低行

    3--- 底行模式(Esc :)
        w   //保存
        q   //退出
        wq  //保存加退出

【6】

    echo  “hello world”     //输出字符串
    cat  -n  文件名            //显示文本内容  -n:行数

    cp  目标文件  路径        //路径存在,将目标文件拷贝到指定路径下
    cp  目标文件  路径        //路径不存在,在当前路径拷贝,文件名为路径名


    mv  目标文件  路径        //路径存在,将目标文件移动到指定路径下
    mv  目标文件  路径        //路径不存在,更名

【7】简单程序

【8】GCC

    1---
        gcc  1.c        ---》  a.out
        ./a.out


    2--- 
        gcc 1.c  -o  hello
        ./hello


    3--- 
        预处理:主要进行宏替换以及头文件的包含展开
        gcc -E Hello.c -o Hello.i

        编译:编译生成汇编文件,会检查语法是否有错误
        gcc -S Hello.i -o Hello.s

        汇编:将汇编文件编译生成目标文件(二进制文件)
        gcc -c Hello.s -o Hello.o

        链接:链接库函数,生成可执行文件
        gcc Hello.o -o Hello


    4--- 
        gcc -c Hello.c -o Hello.o
        gcc Hello.o -o Hello

【9】数值表示形式

              a  b  c  d  e   f

    十进制    八进制    十六进制    二进制

    182       266       B6  1011 0110
                            8421 8421   


    89        131       59  0101 1001

【10】非数值数据

    man ascii

    ‘A’ ~  ‘Z’     ‘a’ ~  ‘z’
     65     90       97     122

    ‘0’ ~  ‘9’     ‘\n’  '空格'  '\0’ 
     48     57       10     32     0
### 错误分析 `libp11-kit.so.0: undefined symbol: ffi_type_pointer, version LIBFFI_BASE_7.0` 的错误通常是由 `libffi` 和其依赖库之间的版本冲突引起的。具体来说,`libp11-kit.so.0` 期望找到特定版本的符号(如 `LIBFFI_BASE_7.0`),但由于安装了多个不同版本的 `libffi` 库,或者某些路径优先级设置不当,导致加载了不兼容的版本。 此问题不仅限于 Python 中导入模块时发生,在构建 Docker 镜像、运行 Conda 虚拟环境以及执行 Git 命令时也可能出现类似的错误[^1][^2][^3]。 --- ### 解决方案 #### 方法:更新或重新安装 `libffi` 确保系统中的 `libffi` 是最新版本,并且与当前使用的软件包相匹配: ```bash sudo apt-get update sudo apt-get install --reinstall libffi-dev libffi7 ``` 如果仍然存在问题,则尝试手动编译并安装最新的 `libffi` 版本: ```bash wget https://github.com/libffi/libffi/releases/download/v3.4.2/libffi-3.4.2.tar.gz tar -xvzf libffi-3.4.2.tar.gz cd libffi-3.4.2/ ./configure --prefix=/usr/local make && sudo make install ``` 完成上述操作后,需确认新版本已被正确加载: ```bash ldconfig -p | grep libffi ``` 这步有助于验证 `/usr/local/lib` 是否被加入动态链接器缓存中[^4]。 --- #### 方法二:清理旧版 `libffi` 文件 当使用 Conda 创建虚拟环境时,可能存在多份重复的 `libffi` 安装实例。这些冗余可能导致符号解析失败。可以通过以下方式移除不必要的文件: ```bash rm ${CONDA_PREFIX}/lib/libffi*.so* ``` 随后重启受影响的应用程序或脚本来测试效果。 注意:仅适用于基于 Conda 构建的项目;对于全局范围内的更改应谨慎处理以免影响其他服务功能。 --- #### 方法三:调整 LD_LIBRARY_PATH 环境变量 有时即使完成了前两步仍会遭遇同样的难题,这是因为操作系统默认搜索顺序未能指向正确的共享对象位置所致。临时修改 `LD_LIBRARY_PATH` 可作为应急手段之: ```bash export LD_LIBRARY_PATH=/path/to/correct/lib:$LD_LIBRARY_PATH ``` 将上面命令里的路径替换为你实际存放目标 `libffi` 实现的地方即可。为了持久生效可将其添加至 `.bashrc` 或者启动脚本里去永久化配置改变. --- #### 方法四:针对特定场景优化 如果是因引入第三方库而引发此类异常情况的话(比如 cv_bridge),那么除了修正基础支持外还需要特别关注那些间接依赖关系是否存在潜在风险因素: - **Python**: 如果是在 Pyhton 下调用外部 C 扩展产生的问题,建议通过 pip 升级对应扩展包。 ```bash python -m pip install --upgrade setuptools wheel ``` - **Docker Image**: 对于容器镜像而言,应该明确指定基础映象及其组件层次结构来减少不确定性干扰源的影响程度. ```dockerfile FROM ubuntu:latest RUN apt-get update \ && apt-get install -y build-essential cmake git wget curl software-properties-common \ && add-apt-repository ppa:deadsnakes/ppa \ && apt-get update \ && apt-get install -y python3.9 python3-pip python3-setuptools python3-wheel \ && ln -s /usr/bin/python3.9 /usr/bin/python3 \ && ln -s /usr/bin/pip3 /usr/bin/pip \ && rm -rf /var/lib/apt/lists/* WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt CMD ["python", "./your_script.py"] ``` 以上示例展示了如何创建个干净的基础开发环境从而规避掉许多常见的兼容性隐患[^2]. --- ### 总结 综上所述,解决 `libp11-kit.so.0: undefined symbol: ffi_type_pointer` 这类问题的关键在于识别出真正引起冲突的具体原因——即哪个环节引入了相互矛盾的 `libffi` 版本组合。然后采取针对性措施消除这种差异性即可恢复正常运作状态。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值