使用arm-none-linux-gnueabihf-gcc编译成功却未生成可执行文件
编译问题排查与解答
未生成可执行文件的可能原因
- 输出目录不存在:编译命令指定输出到
compiled/my_prog,但gcc不会自动创建不存在的目录。先执行mkdir -p compiled创建目录,再重新编译。 - 目录权限不足:如果
compiled目录存在但你没有写入权限,会导致文件无法生成。执行chmod +w compiled调整权限后重试。 - 链接阶段隐式失败:部分情况下编译无警告,但链接过程可能因依赖缺失静默失败。添加
-v参数查看完整编译流程,定位问题:/home/User/Downloads/arm-gnu-toolchain-12.2.rel1-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-gcc -v my_code.c -o compiled/my_prog
32位/64位工具链差异的疑问解答
- 系统依赖不匹配:你使用的32位ARM工具链需要系统提供32位的依赖库,而Fedora 36默认是64位环境,可能缺少这些32位依赖,导致链接阶段无法完成,进而不生成可执行文件;而64位ARM工具链与系统架构匹配,依赖齐全,所以能正常生成文件。
- 目标架构适配:Cortex-A53支持32位ARMv8-A和64位AArch64两种模式。如果目标是32位,需要在Fedora上安装32位开发依赖(比如
glibc-devel.i686),确保工具链能找到必要的标准库,才能正常生成32位可执行文件。
内容的提问来源于stack exchange,提问作者user12559754
相关产品推荐
相关产品推荐

