尝试使用以下配置参数交叉编译 glib 时出现以下错误:
./configure --prefix=$HOME --host=arm-hisiv400-linux
checking for growing stack pointer... configure: error: in `/home/aa/Hi3536_SDK_V2.0.4.0/glib-2.50.0':
configure: error: cannot run test program while cross compiling
See `config.log' for more details
Run Code Online (Sandbox Code Playgroud)
有没有办法禁用这些测试,以便我的交叉编译过程可以通过?
我正在阅读《Linux From Scratch 11.0》一书。在三。构建 LFS 交叉工具链和临时工具,ii。工具链技术说明,有一些关于加拿大交叉编译的内容。我不明白为什么需要 3 个阶段和 3 台机器才能达到最终结果。文本假设我们从计算机 A 和一个在 A 上运行并为 A 生成二进制文件的编译器开始。那么为什么我们不直接使用该编译器来构建一个在 C 上运行并为 C 构建二进制文件的编译器呢?构建一个在 A 上运行但为 B 构建的编译器,然后构建一个在 B 上运行但为 C 构建的编译器,最后构建在 C 上运行并为 C 构建的编译器,为什么会有这么多麻烦呢?
我还在维基百科上找到了一篇关于它的文章 - https://en.wikipedia.org/wiki/Cross_compiler。
我更新了版本“2014.08”(稳定版)的 buildroot 并更新了我的项目的内核版本(3.12.26),当 buildroot 尝试构建linux-headers-3.12.26包时,出现以下错误:
/output/host/usr/arm-buildroot-linux-gnueabi/sysroot 2.6;然后退出1;fi 内核头文件选择不正确:预期为 2.6.x,得到 3.12.x”
我该如何解决?我必须更改脚本check-kernel-headers.sh吗?
我正在尝试在 x86_64 Ubuntu 11.04 上为 i386(32 位)构建 PHP 内存缓存扩展(v2.2.6)。
./configure默认情况下使用 config.guess(x86_64-unknown-linux-gnu在我的系统上输出),但我想覆盖它。
我将如何继续?
我已经下载了expect5.4。我正在尝试为运行精简版 linux 的 ARM(PandaBoard) 交叉编译它。
在配置的初始设置中,我尝试
Shell$ ./configure --host=ARM
configure: WARNING: If you wanted to set the --build type, don't use --host.
If a cross compiler is detected then cross compile mode will be used.
checking for correct TEA configuration... ok (TEA 3.9)
configure: configuring expect 5.45
checking for Tcl configuration... found /home/user1/scripts/tcl8.6.0/unix/tclConfig.sh
checking for existence of /home/user1/scripts/tcl8.6.0/unix/tclConfig.sh... loading
configure: --prefix defaulting to TCL_PREFIX /usr/local
configure: --exec-prefix defaulting to TCL_EXEC_PREFIX /usr/local
checking for ARM-gcc... /home/user1/toolchain/toolchain/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-gcc
checking for C …Run Code Online (Sandbox Code Playgroud) 我尝试安装一个交叉工具链,以便我可以在 amd64(Debian 测试“jessie”)上为我的 ARM 系统构建 Linux 内核。我有这个条目sources.list:
deb http://www.emdebian.org/debian sid main
Run Code Online (Sandbox Code Playgroud)
当我尝试安装gcc-4.7-arm-linux-gnueabi 时,出现错误:
cc-4.7-arm-linux-gnueabi : 依赖:libgomp1-armel-cross (>=4.7.2-5) 但它不会被安装
libgomp1-armel-cross又依赖于gcc-4.8-base-armel-cross,它在任何地方都不可用。
在某些时候,我确实设法从同一个存储库安装了这些交叉构建工具,甚至在几周前构建了一个现在可以在这些 ARM 系统上运行的内核。该存储库中是否有损坏的东西?我尝试了几个其他版本的 GCC,但仍然遇到同样的问题。
一个不理想的解决方案是在 Ubuntu 12.04 VM 中交叉构建。该发行版具有可从其官方存储库获得的 ARM 交叉编译器。
当我运行我的 C 程序时,我需要在我的机器上生成MIPS特定的代码。当我简单地奔跑时,
gcc -O2 -S -c hello.c
Run Code Online (Sandbox Code Playgroud)
在我的系统上,我得到了hello.s它似乎生成了一些汇编代码,但它似乎不是MIPS特定的代码。hello.s文件内容如下。
.file "hello.c"
.section .rodata.str1.1,"aMS",@progbits,1
.LC0:
.string "Hello world"
.text
.p2align 4,,15
.globl main
.type main, @function
main:
.LFB11:
.cfi_startproc
movl $.LC0, %edi
xorl %eax, %eax
jmp printf
.cfi_endproc
.LFE11:
.size main, .-main
.ident "GCC: (GNU) 4.4.7 20120313 (Red Hat 4.4.7-4)"
.section .note.GNU-stack,"",@progbits
Run Code Online (Sandbox Code Playgroud)
如何在我的机器上生成MIPS特定代码?
我的机器详细信息如下。
arch
x86_64
Run Code Online (Sandbox Code Playgroud) 我正在尝试为 ARM 交叉编译 openSSH,但似乎我没有成功:
这是我的配置参数:
./configure --host=arm CC=arm-hisiv400-linux-g++ --prefix=/home/aa/Hi3536_SDK_V2.0.4.0/openSSH --with-zlib=/usr/include
checking zlib.h presence... yes
configure: WARNING: zlib.h: present but cannot be compiled
configure: WARNING: zlib.h: check for missing prerequisite headers?
configure: WARNING: zlib.h: see the Autoconf documentation
configure: WARNING: zlib.h: section "Present But Cannot Be Compiled"
configure: WARNING: zlib.h: proceeding with the compiler's result
configure: WARNING: ## ------------------------------------------- ##
configure: WARNING: ## Report this to openssh-unix-dev@mindrot.org ##
configure: WARNING: ## ------------------------------------------- ##
checking for zlib.h... no
configure: error: *** zlib.h …Run Code Online (Sandbox Code Playgroud) 我在 amd64 机器上有一个 qemu-armhf chroot 环境(主要用于编译 Raspberry Pi 代码)。因此,它可以运行 armhf 和 amd64 二进制文件,但后者速度更快。
为了获得更好的速度,我在 chroot 中安装了某些软件包(例如 make)的 amd64 版本。这工作得很好,直到我需要 apt-get 一些其他的 armhf 包,并且它恰好将 make 列为依赖项,于是我得到了这个:
The following packages have unmet dependencies:
build-essential : Depends: make but it is not going to be installed
dpkg-dev : Depends: make but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
Run Code Online (Sandbox Code Playgroud)
如果我尝试建议的命令,那么它会说它想要安装make:armhf和卸载make:amd64。我不希望它这样做。我如何告诉 APTmake:armhf已经安装(因为我希望用它make:amd64来满足依赖关系)而不实际安装它?
我尝试使用, …