如何解决尝试使用 arm-eabi-g++ 为 RPI 零编译的分段错误
我正在尝试为运行 RPI 的最新 Tiny Core Linux 端口的 Raspberry PI Zero W 进行交叉编译。它以最少的 wifi 模块运行(连同 gcc_base-dev
和 glibc_base-dev
,编译的应用程序可能需要)。我编译的机器是 Arch Linux 系统,我使用来自 AUR 的包 arm-eabi-gcc-linaro-bin
并带有以下参数:
arm-eabi-g++ -march=armv6z -mtune=arm1176jzf-s main.cpp -o Test
main.cpp
非常简单:
int main() {
return 69; //Some odd number that can be used to identify if the code actually ran.
}
在 PI 上,运行可执行文件给了我 During startup program terminated with signal SIGSEGV,Segmentation fault.
。
我试过用 -static -nostdinc -nostdinc++ -static-libgcc
的各种组合运行编译器,但无济于事。我想最终在最终的可执行文件中使用 -static-libgcc
,因为我能找到的唯一一个带有 libgcc 的用于 RPI 微型内核的包包含很多我不需要的东西。
我的一个潜在想法是,我拥有的头文件与库的内容与 PI 不匹配,但静态编译肯定会解决这个问题吗?此外,每个应用程序都会自动与 linux-vdso
链接。也许 g++ 没有为此使用正确的文件?我认为静态链接仍然会为不同的系统保留 linux-vdso
动态。
一个附带问题。必须安装软件包,从中复制文件,然后传输到我的计算机,然后在尝试进行编译时卸载软件包非常慢。有没有办法从 http://www.tinycorelinux.net 解压 *.tcz
文件?这会让事情变得更容易
一些可能有用的信息:
rpi $ cat /proc/cpuinfo
processor : 0
model name : ARMv6-compatible processor rev 7 (v6l)
BogoMIPS : 697.95
Features : half thumb fastmult vfp edsp java tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xb76
CPU revision : 7
Hardware : BCM2835
Revision : 9000c1
Serial : 0000000099646ab7
Model : Raspberry Pi Zero W Rev 1.1
arch $ arm-eabi-g++ --version
arm-eabi-g++ (Linaro GCC 7.5-2019.12) 7.5.0
Copyright (C) 2017 Free Software Foundation,Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
rpi $ uname -r
5.10.16-piCore
arch $ uname -r
5.11.15-arch1-2
(with intentional invalid argument to g++):
valid arguments to ‘-march=’ are: armv2 armv2a armv3 armv3m armv4 armv4t armv5 armv5e armv5t armv5te armv5tej armv6 armv6-m armv6j armv6k armv6kz armv6s-m armv6t2 armv6z armv6zk armv7 armv7-a armv7-m armv7-r armv7e-m armv7ve armv8-a armv8-a+crc armv8-m.base armv8-m.main armv8-m.main+dsp armv8.1-a armv8.2-a armv8.2-a+dotprod armv8.2-a+fp16 armv8.2-a+fp16+dotprod iwmmxt iwmmxt2 native
valid arguments to ‘-mtune=’ are: arm1020e arm1020t arm1022e arm1026ej-s arm10e arm10tdmi arm1136j-s arm1136jf-s arm1156t2-s arm1156t2f-s arm1176jz-s arm1176jzf-s arm2 arm250 arm3 arm6 arm60 arm600 arm610 arm620 arm7 arm70 arm700 arm700i arm710 arm7100 arm710c arm710t arm720 arm720t arm740t arm7500 arm7500fe arm7d arm7di arm7dm arm7dmi arm7m arm7tdmi arm7tdmi-s arm8 arm810 arm9 arm920 arm920t arm922t arm926ej-s arm940t arm946e-s arm966e-s arm968e-s arm9e arm9tdmi cortex-a12 cortex-a15 cortex-a15.cortex-a7 cortex-a17 cortex-a17.cortex-a7 cortex-a32 cortex-a35 cortex-a5 cortex-a53 cortex-a57 cortex-a57.cortex-a53 cortex-a7 cortex-a72 cortex-a72.cortex-a53 cortex-a73 cortex-a73.cortex-a35 cortex-a73.cortex-a53 cortex-a8 cortex-a9 cortex-m0 cortex-m0.small-multiply cortex-m0plus cortex-m0plus.small-multiply cortex-m1 cortex-m1.small-multiply cortex-m23 cortex-m3 cortex-m33 cortex-m4 cortex-m7 cortex-r4 cortex-r4f cortex-r5 cortex-r7 cortex-r8 ep9312 exynos-m1 fa526 fa606te fa626 fa626te fa726te fmp626 generic-armv7-a iwmmxt iwmmxt2 marvell-pj4 mpcore mpcorenovfp native strongarm strongarm110 strongarm1100 strongarm1110 xgene1 xscale
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。