我正在学习 C#,所以我做了一个 C# 小程序,上面写着Hello, World!,然后用以下命令编译mono-csc并运行它mono:
$ mono-csc Hello.cs
$ mono Hello.exe
Hello, World!
Run Code Online (Sandbox Code Playgroud)
我注意到当我TAB输入bash,Hello.exe被标记为可执行文件。事实上,它只通过一个加载文件名的 shell 运行!
Hello.exe是不是有一个有趣的文件扩展名的ELF文件:
$ readelf -a Hello.exe
readelf: Error: Not an ELF file - it has the wrong magic bytes at the start
$ xxd Hello.exe | head -n1
00000000: 4d5a 9000 0300 0000 0400 0000 ffff 0000 MZ..............
Run Code Online (Sandbox Code Playgroud)
MZ意味着它是 Microsoft Windows 静态链接的可执行文件。把它放到一个 Windows 盒子上,它就会(应该)运行。
我已经wine安装了,但是wine,是用于的Windows应用程序的兼容层,需时约5倍,只要运行 …
我已经从 Valgrind 主干下载了源代码,并将其构建为在由 ARM926(ARMv5t 架构)提供支持的嵌入式 Linux 系统(Montavista Linux)上使用。一切都很顺利,直到我尝试运行它来检查我制作的一些应用程序;Valgrind 告诉我:
“valgrind:无法为平台‘arm-linux’启动工具‘memcheck’:没有这样的文件或目录”。
尝试运行任何其他工具都会给出相同的消息。对于make install,我使用了 --prefix 选项,指向通过 NFS 挂载的嵌入式系统的文件系统(例如 --prefix=/home/NFS_mounted/opt/valgrind)。我检查了安装位置,那里的lib目录包含适当的工具;我还检查了 Valgrind 的相应 pkgconfig 文件,它似乎没问题,所以我现在有点无能为力,无法弄清楚出了什么问题。2个问题:
我在 chroot-ed Debianarmel环境中看到了一些非常奇怪的东西。
但首先,有点背景故事......这很长,但问题很复杂,任何潜在的帮助都取决于了解完整的故事。
我有一个运行 Linux 的嵌入式 ARM SoC - 更具体地说,armel是 2.6.17 内核上的Debian Lenny。Debian的发行版本身易于升级到更高版本(sudo apt-get dist-upgrade),因此可以升至速度,到armel的版本
squeeze或甚wheezy。
问题是内核是自定义的......有问题的 ARM SoC 不是主线内核的一部分,所以它在 2.6.17 几乎被放弃了。
如果您知道 Linux 和 GLIBC 是如何工作的,那么您已经可以看到问题了——GLIBC 版本是用最低支持的内核版本编译的……这已经超过了 2.6.17。因此,如果我们尝试将 chroot 转换为 Debian 压缩...
$ # From inside the little ARM machine running Debian Lenny
$ sudo debootstrap --arch armel squeeze /squeeze \
http://ftp.whateverCountry.debian.org/debian
$ sudo -i
# mount -t proc none /squeeze/proc
# mount -t sysfs none /squeeze/sys …Run Code Online (Sandbox Code Playgroud) 我最近安装Ubuntu 18.04, Linux foobar-VirtualBox 4.15.0-23-generic #25-Ubuntu SMP Wed May 23 18:02:16 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux在虚拟机上。我想为带有硬浮点的Cortex-M4F CPU 交叉编译应用程序,因此我已经安装了包gcc-arm-none-eabi版本15:6.3.1+svn253039-1build1以及 libnewlib-arme-none-eabi版本2.4.0.20160527-3.
由于使用硬浮点数的目标文件与使用软浮点数的库之间存在冲突,因此出现链接器错误。一些研究表明这是一个已知的Ubuntu 18.04 (Bionic Beaver) 问题:
请注意,我确实提供了正确的编译器和链接器标志,并且该项目使用来自GNU ARM Embedded的 Windows 交叉工具链正确构建。我认为在这里粘贴完整的错误是没有意义的。如果有人认为这是必需的,我很乐意编辑这个问题。
根据我的基本理解,我有两种解决方案来获得功能性 GCC ARM 工具链:
gcc-arm-none-eabi以返回到工作版本gcc-arm-none-eabi并安装(gcc-arm-embedded从 PPA安装 gcc-arm-embedded)为了降级,gcc-arm-none-eabi我必须在我的包管理器中找到以前的版本。我首先用 更新了包列表sudo apt …
我正在笔记本电脑(运行 debian 7)上为我的 Raspberry Pi 交叉编译 Linux 内核(按照Raspberry Pi Kernel Compilation 中的说明进行操作);但是在编译时
make ARCH=arm CROSS_COMPILE=${CCPREFIX}
Run Code Online (Sandbox Code Playgroud)
我收到以下消息:
CHK include/linux/version.h
CHK include/generated/utsrelease.h
make[1]: `include/generated/mach-types.h' is up to date.
CC kernel/bounds.s
gcc: error trying to exec 'cc1': execvp: No such file or directory
make[1]: *** [kernel/bounds.s] Error 1
make: *** [prepare0] Error 2
Run Code Online (Sandbox Code Playgroud)
我认为问题是找不到 cc1 或者gcc没有正确安装(所以我重新安装了 gccapt-get --reinstall install gcc但没有运气)。
gcc -v 给出:
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/i486-linux-gnu/4.7/lto-wrapper
Target: i486-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 4.7.2-5' --with-bugurl=file:///usr/share/doc/gcc-4.7/README.Bugs …Run Code Online (Sandbox Code Playgroud) 我需要在mini210s运行Linux 3.0.8 armv7l 的FriendlyARM上安装 Chromium
depot_tools按照这些指南安装获取代码和
Linux Chromium ARM得到后depot_tools:
vagrant@vagrant:~/depot_tools$ fetch chromium
Run Code Online (Sandbox Code Playgroud)
export GYP_CROSSCOMPILE=1
export GYP_DEFINES="target_arch=arm arm_float_abi=hard"
Run Code Online (Sandbox Code Playgroud)
vagrant@vagrant:~/depot_tools/src$ ./chrome/installer/linux/sysroot_scripts/install-debian.wheezy.sysroot.py --arch=arm
Installing Debian Wheezy arm root image: /home/vagrant/depot_tools/src/chrome/installer/linux/debian_wheezy_arm-sysroot
Downloading http://storage.googleapis.com/chrome-linux-sysroot/toolchain/285950/debian_wheezy_arm_sysroot.tgz
build/install-build-deps.sh --arm
build/install-build-deps-android.sh
gclient sync
Run Code Online (Sandbox Code Playgroud)
build/gyp_chromium -Goutput_dir=out_arm
ninja -C out_arm/Debug chrome
Run Code Online (Sandbox Code Playgroud)
vagrant@vagrant:~/depot_tools/src$ ninja -C out_arm/Debug chrome
ninja: Entering directory `out_arm/Debug'
[222/18316] CXX obj/third_party/webrtc/modules/audio_coding/codecs/audio_encoder_interface.audio_encoder.o
FAILED: ../../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD -MF …Run Code Online (Sandbox Code Playgroud) 目前,我尝试使用Cross Linux from Scratch 中的说明从头开始构建嵌入式 Linux 。
一切正常,直到我尝试编译 GCC 交叉编译器。我想为 Beagleboard-xM 构建 Linux...所以我选择了以下设置:
export CLFS_ABI="aapcs-linux"
export CLFS_HOST="x86_64-cross-linux-gnu"
export CLFS_TARGET="armv7a-unknown-linux-uclibceabi"
export CLFS_ARCH="arm"
export CLFS_ENDIAN="little"
export CLFS_ARM_ARCH="armv7"
export CLFS_ARM_MODE="arm"
export CLFS_FLOAT="hard"
export CLFS_FPU="neon"
Run Code Online (Sandbox Code Playgroud)
不,只要我尝试运行此页面上的说明,命令就会make all-gcc all-target-libgcc出错。
checking for armv7a-unknown-linux-uclibceabi-gcc... /mnt/clfs/sources/gcc-build/./gcc/xgcc -B/mnt/clfs/sources/gcc-build/./gcc/ -B/mnt/clfs/cross-tools/armv7a-unknown-linux-uclibceabi/bin/ -B/mnt/clfs/cross-tools/armv7a-unknown-linux-uclibceabi/lib/ -isystem /mnt/clfs/cross-tools/armv7a-unknown-linux-uclibceabi/include -isystem /mnt/clfs/cross-tools/armv7a-unknown-linux-uclibceabi/sys-include
checking for suffix of object files... configure: error: in `/mnt/clfs/sources/gcc-build/armv7a-unknown-linux-uclibceabi/libgcc':
configure: error: cannot compute suffix of object files: cannot compile
See `config.log' for more details.
make: *** [configure-target-libgcc] Error …Run Code Online (Sandbox Code Playgroud) 我想在 amd64 机器上构建一个 armhf 包。我的 armhf 机器比 amd64 机器慢很多。
我的过程信息:
lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 1
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 158
Model name: Intel(R) Core(TM) i5-7400 CPU @ 3.00GHz
Stepping: 9
CPU MHz: 1036.788
CPU max MHz: 3500,0000
CPU min MHz: 800,0000
BogoMIPS: 6000.00
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 6144K
NUMA node0 CPU(s): 0-3 …Run Code Online (Sandbox Code Playgroud)