0%

32/64系统支撑库导致 Bear 编译失败

使用 Bear 生成 compile_commands.json 时需要编译 32位库,记录错误及解决过程

Bear

编译命令及错误

$ cmake .. -DCMAKE_C_COMPILER_ARG1="-m32"; VERBOSE=1 make all
    Linking C executable cmTC_8b292
    /usr/local/bin/cmake -E cmake_link_script CMakeFiles/cmTC_8b292.dir/link.txt --verbose=1
    /usr/bin/cc -m32      -rdynamic CMakeFiles/cmTC_8b292.dir/testCCompiler.c.o  -o cmTC_8b292
    /usr/bin/ld: 当搜索用于 /usr/lib/gcc/x86_64-linux-gnu/7/libgcc.a 时跳过不兼容的 -lgcc
    /usr/bin/ld: 找不到 -lgcc
    /usr/bin/ld: 当搜索用于 /usr/lib/gcc/x86_64-linux-gnu/7/libgcc.a 时跳过不兼容的 -lgcc
    /usr/bin/ld: 找不到 -lgcc

可以看到原因是找不到 libgcc.a

解决

系统为 ubuntu18.04,可以找到 /usr/lib/gcc/x86_64-linux-gnu/7/libgcc.a,需要安装32位支持库

$ sudo apt-cache search libgcc
libgcc1 - GCC 支持库
lib32gcc-7-dev - GCC support library (32 bit development files)

$ sudo apt install lib32gcc-7-dev
$ fd libgcc.a
gcc/x86_64-linux-gnu/7/32/libgcc.a
gcc/x86_64-linux-gnu/7/libgcc.a