davylin 2024-12-30 02:28 采纳率: 37.5%
浏览 7
已结题

LFS-10.1 第一次编译 6.17. Binutils-2.36.1 - Pass 2 时,无法生成 libopcodes-2.36.1.so库

在编译LFS-10.1 的编译 6.17. Binutils-2.36.1 - Pass 2 库时,出现的问题如下:
首次编译 Binutils-2.36.1 - Pass 2时,无法生成 libopcodes-2.36.1.so库。
需要再一次编译Binutils-2.36.1 - Pass 2,才能生成libopcodes-2.36.1.so库。

LFS-10.1 的6.17. Binutils-2.36.1 - Pass 2的编译脚本如下:


tar xvf binutils-2.36.1.tar.xz
cd binutils-2.36.1

mkdir -v build
cd build

../configure                   \
        --prefix=/usr              \
        --build=$(../config.guess) \
    --host=$LFS_TGT            \
    --disable-nls              \
    --enable-shared            \
    --disable-werror           \
    --enable-64-bit-bfd

make

make DESTDIR=$LFS install
install -vm755 libctf/.libs/libctf.so.0.0.0 $LFS/usr/lib

cd ../..
rm -rf binutils-2.36.1

LFS-10.1 第6章编译6.17. Binutils-2.36.1 - Pass 2 无法生成libopcodes-2.36.1.so库。后面第7章的编译会出错。
如编译7.7. Libstdc++ from GCC-10.2.0, Pass 2 和 7.8. Gettext-0.21 都会报错。原因是缺少libopcodes-2.36.1.so库。

  • 写回答

3条回答 默认 最新

  • 檀越@新空间 2024-12-30 02:56
    关注

    上午好☀️☀️☀️️
    本答案参考通义千问

    在LFS-10.1中编译Binutils-2.36.1 - Pass 2时,如果遇到无法生成libopcodes-2.36.1.so库的问题,这通常与配置选项或编译环境有关。以下是一些可能的解决方案:

    解决方案

    1. 检查编译环境: 确保你的编译环境是干净的,并且没有残留的旧文件。可以尝试删除之前的编译目录并重新开始。

    2. 修改配置选项: 在配置选项中添加--enable-ld=default--enable-gold,以确保所有必要的库都被正确编译。

    3. 手动编译和安装libopcodes: 如果上述方法无效,可以尝试手动编译和安装libopcodes库。

    以下是修改后的编译脚本:

    # 解压源码
    tar xvf binutils-2.36.1.tar.xz
    cd binutils-2.36.1
    
    # 创建构建目录
    mkdir -v build
    cd build
    
    # 配置
    ../configure                   \
        --prefix=/usr              \
        --build=$(../config.guess) \
        --host=$LFS_TGT            \
        --disable-nls              \
        --enable-shared            \
        --disable-werror           \
        --enable-64-bit-bfd        \
        --enable-ld=default        \
        --enable-gold
    
    # 编译
    make
    
    # 安装
    make DESTDIR=$LFS install
    install -vm755 libctf/.libs/libctf.so.0.0.0 $LFS/usr/lib
    
    # 清理
    cd ../..
    rm -rf binutils-2.36.1
    

    详细步骤

    1. 解压源码

      tar xvf binutils-2.36.1.tar.xz
      cd binutils-2.36.1
      
    2. 创建构建目录

      mkdir -v build
      cd build
      
    3. 配置

      ../configure                   \
          --prefix=/usr              \
          --build=$(../config.guess) \
          --host=$LFS_TGT            \
          --disable-nls              \
          --enable-shared            \
          --disable-werror           \
          --enable-64-bit-bfd        \
          --enable-ld=default        \
          --enable-gold
      
    4. 编译

      make
      
    5. 安装

      make DESTDIR=$LFS install
      install -vm755 libctf/.libs/libctf.so.0.0.0 $LFS/usr/lib
      
    6. 清理

      cd ../..
      rm -rf binutils-2.36.1
      

    检查生成的库

    编译完成后,检查$LFS/usr/lib目录下是否生成了libopcodes-2.36.1.so库。如果没有生成,可以尝试重新编译或手动编译libopcodes库。

    手动编译libopcodes

    如果上述方法仍然无效,可以尝试手动编译libopcodes库:

    1. 进入opcodes目录

      cd binutils-2.36.1/opcodes
      
    2. 配置

      ../../configure                   \
          --prefix=/usr              \
          --build=$(../../config.guess) \
          --host=$LFS_TGT            \
          --disable-nls              \
          --enable-shared            \
          --disable-werror           \
          --enable-64-bit-bfd
      
    3. 编译

      make
      
    4. 安装

      make DESTDIR=$LFS install
      

    通过以上步骤,你应该能够成功生成libopcodes-2.36.1.so库,并解决后续编译中的依赖问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月7日
  • 已采纳回答 12月30日
  • 创建了问题 12月30日