【Debug】【Ubuntu】cannot find crt1.o | cannot find lgcc_s

本文详细介绍了如何在64位Linux系统中解决32位编译遇到的crt1.o和lgcc_s缺失问题,通过查找并链接所需的32位支持文件,确保编译过程顺利进行。

问题是,可能只有当前架构的gcc,而且是64位的。所以需要32位的支持文件。

对于 cannot find crt1.o

查找crti.o文件

sudo find /usr/ -name crti.o

打开~/.bashrc文件

gedit ~/.bashrc

添加下面的内容,保存

LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LIBRARY_PATH
export LIBRARY_PATH

更新环境变量

source ~/.bashrc

对于 cannot find lgcc_s

查找lgcc_s文件

sudo find /usr/ -name libgcc_s.so

查看连接lgcc_s文件的时候的查找目录,会发现找不到-lgcc_s

ld -lgcc_s --verbose

在这里插入图片描述

将找到的libgcc_s.so和libgcc_s.so.1软连接到相应的目录/usr/lib/x86_64-linux-gnu/

sudo ln -s /usr/lib/gcc/x86_64-linux-gnu/7/libgcc_s.so /usr/lib/x86_64-linux-gnu/
sudo ln -s /usr/lib/gcc/x86_64-linux-gnu/7/libgcc_s.so.1 /usr/lib/x86_64-linux-gnu/

再次查看,已经找到了
在这里插入图片描述

[root@localhost build]# echo $LD_LIBRARY_PATH /usr/local/smartchip/lib:/usr/local/openmpi/lib:/usr/local/openmpi/lib: [root@localhost build]# export LD_LIBRARY_PATH=/path/to/library:$LD_LIBRARY_PATH [root@localhost build]# find / -name "crt1.o" 2>/dev/null /usr/lib64/crt1.o [root@localhost build]# ln -s /usr/lib64/crt1.o /usr/lib/crt1.o [root@localhost build]# yum install -y gcc Last metadata expiration check: 1:58:52 ago on Wed 19 Nov 2025 02:35:42 PM CST. Package gcc-7.3.0-2020033101.58.p01.ky10.x86_64 is already installed. Dependencies resolved. Nothing to do. Complete! [root@localhost build]# ../configure --prefix=/usr/local/gcc-10.2.0 checking build system type... x86_64-pc-linux-gnu checking host system type... x86_64-pc-linux-gnu checking target system type... x86_64-pc-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether ln works... yes checking whether ln -s works... yes checking for a sed that does not truncate output... /usr/bin/sed checking for gawk... gawk checking for libatomic support... yes checking for libitm support... yes checking for libsanitizer support... yes checking for libvtv support... yes checking for libhsail-rt support... yes checking for libphobos support... yes checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking for g++... g++ checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking whether g++ accepts -static-libstdc++ -static-libgcc... no checking for gnatbind... no checking for gnatmake... no checking whether compiler driver understands Ada... no checking how to compare bootstrapped objects... cmp --ignore-initial=16 $$f1 $$f2 checking for objdir... .libs configure: WARNING: using in-tree isl, disabling version check The following languages will be built: c,c++,fortran,lto,objc *** This configuration is not supported in the following subdirectories: gnattools gotools target-libada target-libhsail-rt target-libphobos target-zlib target-libgo target-libffi target-liboffloadmic (Any other directories should still work fine.) checking for default BUILD_CONFIG... bootstrap-debug checking for --enable-vtable-verify... no /usr/bin/ld: cannot find crti.o: No such file or directory /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/7.3.0/libgcc.a when searching for -lgcc /usr/bin/ld: cannot find -lgcc /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/7.3.0/libgcc_s.so when searching for -lgcc_s /usr/bin/ld: cannot find -lgcc_s /usr/bin/ld: cannot find -lc /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/7.3.0/libgcc.a when searching for -lgcc /usr/bin/ld: cannot find -lgcc /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/7.3.0/libgcc_s.so when searching for -lgcc_s /usr/bin/ld: cannot find -lgcc_s /usr/bin/ld: cannot find crtn.o: No such file or directory collect2: error: ld returned 1 exit status configure: error: I suspect your system does not have 32-bit development libraries (libc and headers). If you have them, rerun configure with --enable-multilib. If you do not have them, and want to build a 64-bit-only compiler, rerun configure with --disable-multilib.
11-20
[main] 正在配置项目: Fast-DDS [driver] 删除 /home/leo/work/fastdds/Fast-DDS/build/CMakeCache.txt [driver] 删除 /home/leo/work/fastdds/Fast-DDS/build/CMakeFiles [proc] 正在执行命令: /usr/bin/cmake -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_C_COMPILER:FILEPATH=/home/leo/9075/X86/target/qcs9075-rb8-core-kit/qirpsdk_artifacts/qcs9075-rb8-core-kit/qirp-sdk/toolchain/install_dir/sysroots/x86_64-qcomsdk-linux/usr/bin/aarch64-qcom-linux/aarch64-qcom-linux-gcc -DCMAKE_CXX_COMPILER:FILEPATH=/home/leo/9075/X86/target/qcs9075-rb8-core-kit/qirpsdk_artifacts/qcs9075-rb8-core-kit/qirp-sdk/toolchain/install_dir/sysroots/x86_64-qcomsdk-linux/usr/bin/aarch64-qcom-linux/aarch64-qcom-linux-g++ --no-warn-unused-cli -S /home/leo/work/fastdds/Fast-DDS -B /home/leo/work/fastdds/Fast-DDS/build -G Ninja [cmake] Not searching for unused variables given on the command line. [cmake] -- The C compiler identification is GNU 13.3.0 [cmake] -- The CXX compiler identification is GNU 13.3.0 [cmake] -- Detecting C compiler ABI info [cmake] -- Detecting C compiler ABI info - failed [cmake] -- Check for working C compiler: /home/leo/9075/X86/target/qcs9075-rb8-core-kit/qirpsdk_artifacts/qcs9075-rb8-core-kit/qirp-sdk/toolchain/install_dir/sysroots/x86_64-qcomsdk-linux/usr/bin/aarch64-qcom-linux/aarch64-qcom-linux-gcc [cmake] -- Check for working C compiler: /home/leo/9075/X86/target/qcs9075-rb8-core-kit/qirpsdk_artifacts/qcs9075-rb8-core-kit/qirp-sdk/toolchain/install_dir/sysroots/x86_64-qcomsdk-linux/usr/bin/aarch64-qcom-linux/aarch64-qcom-linux-gcc - broken [cmake] CMake Error at /usr/share/cmake-3.22/Modules/CMakeTestCCompiler.cmake:69 (message): [cmake] The C compiler [cmake] [cmake] "/home/leo/9075/X86/target/qcs9075-rb8-core-kit/qirpsdk_artifacts/qcs9075-rb8-core-kit/qirp-sdk/toolchain/install_dir/sysroots/x86_64-qcomsdk-linux/usr/bin/aarch64-qcom-linux/aarch64-qcom-linux-gcc" [cmake] [cmake] is not able to compile a simple test program. [cmake] [cmake] It fails with the following output: [cmake] [cmake] Change Dir: /home/leo/work/fastdds/Fast-DDS/build/CMakeFiles/CMakeTmp [cmake] [cmake] Run Build Command(s):/usr/bin/ninja cmTC_2992e && [1/2] Building C object CMakeFiles/cmTC_2992e.dir/testCCompiler.c.o [cmake] [2/2] Linking C executable cmTC_2992e [cmake] FAILED: cmTC_2992e [cmake] : && /home/leo/9075/X86/target/qcs9075-rb8-core-kit/qirpsdk_artifacts/qcs9075-rb8-core-kit/qirp-sdk/toolchain/install_dir/sysroots/x86_64-qcomsdk-linux/usr/bin/aarch64-qcom-linux/aarch64-qcom-linux-gcc CMakeFiles/cmTC_2992e.dir/testCCompiler.c.o -o cmTC_2992e && : [cmake] /home/leo/9075/X86/target/qcs9075-rb8-core-kit/qirpsdk_artifacts/qcs9075-rb8-core-kit/qirp-sdk/toolchain/install_dir/sysroots/x86_64-qcomsdk-linux/usr/libexec/aarch64-qcom-linux/gcc/aarch64-qcom-linux/13.3.0/ld: cannot find Scrt1.o: No such file or directory [cmake] /home/leo/9075/X86/target/qcs9075-rb8-core-kit/qirpsdk_artifacts/qcs9075-rb8-core-kit/qirp-sdk/toolchain/install_dir/sysroots/x86_64-qcomsdk-linux/usr/libexec/aarch64-qcom-linux/gcc/aarch64-qcom-linux/13.3.0/ld: cannot find crti.o: No such file or directory [cmake] /home/leo/9075/X86/target/qcs9075-rb8-core-kit/qirpsdk_artifacts/qcs9075-rb8-core-kit/qirp-sdk/toolchain/install_dir/sysroots/x86_64-qcomsdk-linux/usr/libexec/aarch64-qcom-linux/gcc/aarch64-qcom-linux/13.3.0/ld: cannot find crtbeginS.o: No such file or directory [cmake] /home/leo/9075/X86/target/qcs9075-rb8-core-kit/qirpsdk_artifacts/qcs9075-rb8-core-kit/qirp-sdk/toolchain/install_dir/sysroots/x86_64-qcomsdk-linux/usr/libexec/aarch64-qcom-linux/gcc/aarch64-qcom-linux/13.3.0/ld: cannot find -lgcc: No such file or directory [cmake] /home/leo/9075/X86/target/qcs9075-rb8-core-kit/qirpsdk_artifacts/qcs9075-rb8-core-kit/qirp-sdk/toolchain/install_dir/sysroots/x86_64-qcomsdk-linux/usr/libexec/aarch64-qcom-linux/gcc/aarch64-qcom-linux/13.3.0/ld: cannot find -lgcc_s: No such file or directory [cmake] /home/leo/9075/X86/target/qcs9075-rb8-core-kit/qirpsdk_artifacts/qcs9075-rb8-core-kit/qirp-sdk/toolchain/install_dir/sysroots/x86_64-qcomsdk-linux/usr/libexec/aarch64-qcom-linux/gcc/aarch64-qcom-linux/13.3.0/ld: cannot find -lc: No such file or directory [cmake] /home/leo/9075/X86/target/qcs9075-rb8-core-kit/qirpsdk_artifacts/qcs9075-rb8-core-kit/qirp-sdk/toolchain/install_dir/sysroots/x86_64-qcomsdk-linux/usr/libexec/aarch64-qcom-linux/gcc/aarch64-qcom-linux/13.3.0/ld: cannot find -lgcc: No such file or directory [cmake] /home/leo/9075/X86/target/qcs9075-rb8-core-kit/qirpsdk_artifacts/qcs9075-rb8-core-kit/qirp-sdk/toolchain/install_dir/sysroots/x86_64-qcomsdk-linux/usr/libexec/aarch64-qcom-linux/gcc/aarch64-qcom-linux/13.3.0/ld: cannot find -lgcc_s: No such file or directory [cmake] /home/leo/9075/X86/target/qcs9075-rb8-core-kit/qirpsdk_artifacts/qcs9075-rb8-core-kit/qirp-sdk/toolchain/install_dir/sysroots/x86_64-qcomsdk-linux/usr/libexec/aarch64-qcom-linux/gcc/aarch64-qcom-linux/13.3.0/ld: cannot find crtendS.o: No such file or directory [cmake] /home/leo/9075/X86/target/qcs9075-rb8-core-kit/qirpsdk_artifacts/qcs9075-rb8-core-kit/qirp-sdk/toolchain/install_dir/sysroots/x86_64-qcomsdk-linux/usr/libexec/aarch64-qcom-linux/gcc/aarch64-qcom-linux/13.3.0/ld: cannot find crtn.o: No such file or directory [cmake] collect2: error: ld returned 1 exit status [cmake] ninja: build stopped: subcommand failed. [cmake] [cmake] [cmake] [cmake] [cmake] [cmake] CMake will not be able to correctly generate this project. [cmake] Call Stack (most recent call first): [cmake] CMakeLists.txt:32 (project) [cmake] [cmake] [cmake] -- Configuring incomplete, errors occurred! [cmake] See also "/home/leo/work/fastdds/Fast-DDS/build/CMakeFiles/CMakeOutput.log". [cmake] See also "/home/leo/work/fastdds/Fast-DDS/build/CMakeFiles/CMakeError.log". [proc] 命令“/usr/bin/cmake -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_C_COMPILER:FILEPATH=/home/leo/9075/X86/target/qcs9075-rb8-core-kit/qirpsdk_artifacts/qcs9075-rb8-core-kit/qirp-sdk/toolchain/install_dir/sysroots/x86_64-qcomsdk-linux/usr/bin/aarch64-qcom-linux/aarch64-qcom-linux-gcc -DCMAKE_CXX_COMPILER:FILEPATH=/home/leo/9075/X86/target/qcs9075-rb8-core-kit/qirpsdk_artifacts/qcs9075-rb8-core-kit/qirp-sdk/toolchain/install_dir/sysroots/x86_64-qcomsdk-linux/usr/bin/aarch64-qcom-linux/aarch64-qcom-linux-g++ --no-warn-unused-cli -S /home/leo/work/fastdds/Fast-DDS -B /home/leo/work/fastdds/Fast-DDS/build -G Ninja”已退出,代码为 1 [proc] 命令: aarch64-qcom-linux-gcc -v 失败,出现错误: Error: spawn aarch64-qcom-linux-gcc ENOENT [proc] 命令: aarch64-qcom-linux-g++ -v 失败,出现错误: Error: spawn aarch64-qcom-linux-g++ ENOENT
最新发布
12-10
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值