从OS X交叉编译到Linux

从OS X交叉编译到Linux,第1张

概述我想从OS X 10.7 Eclipse构建系统编译Linux服务器的二进制文件.这意味着GCC交叉编译器.我从本机4.7.1开始,为主机4.7.1射击.大多数在线说明都特定于嵌入式开发.我想使用libstdc -v3和glibc,这使它有点不同.成功的是什么:>安装包port install gcc47 export CC=gcc-mp-47 exp

我想从OS X 10.7 Eclipse构建系统编译Linux服务器的二进制文件.这意味着GCC交叉编译器.我从本机4.7.1开始,为主机4.7.1射击.

大多数在线说明都特定于嵌入式开发.我想使用libstdc -v3和glibc,这使它有点不同.

成功的是什么:

>安装包

port install gcc47export CC=gcc-mp-47export LD=ld-mp-47export CXX=g++-mp-47export CPP=cpp-mp-47port install gmakeln /opt/local/bin/gmake /opt/local/bin/makeport install gsedln /opt/local/bin/gsed /opt/local/bin/sedport install gawkport install autoconfport install msgfmt

>制作并安装binutils-2.22
> make all-gcc并make install-gcc

使用以下配置:

$../gcc/configure –enable-languages=c,c++,objc,obj-c++ –with-gmp=/opt/local –with-mpfr=/opt/local –with-mpc=/opt/local –prefix=/usr/local/cross/linux –target=x86_64-pc-linux-gnu –disable-nls

>将构建环境指向交叉编译器

export CC=/usr/local/cross/linux/bin/x86_64-pc-linux-gnu-gccexport LD=/usr/local/cross/linux/bin/x86_64-pc-linux-gnu-ldexport AR=/usr/local/cross/linux/bin/x86_64-pc-linux-gnu-arexport CXX=/usr/local/cross/linux/bin/x86_64-pc-linux-gnu-g++export CPP=/usr/local/cross/linux/bin/x86_64-pc-linux-gnu-cpp

>使用配置构建glibc-2.16

../glibc/configure –host=x86_64-pc-linux-gnu –build=x86_64-apple-darwin11 –prefix=/usr/local/cross/linux/ –with-binutils=/usr/local/cross/linux/bin/ –with-headers=/usr/local/cross/linux/include/ libc_cv_forced_unwind=yes libc_cv_ctors_header=yes libc_cv_c_cleanup=yes

失败:

glibc构建不久就失败了.此消息多次出现:

In file included from ./sysdeps/unix/sysdep.h:20:0,from ./sysdeps/unix/x86_64/sysdep.h:18,from sysdeps/unix/sysv/linux/x86_64/sysdep.h:22,from 

不过,这可能是正常的.

然后它无法生成stdio_lim.h.使用make -d,我得到这个:

          Successfully remade target file `/Users/dkrauss/documents/work/glibc-build/csu/abi-tag.h'.          ConsIDering target file `/Users/dkrauss/documents/work/glibc-build/bits/stdio_lim.h'.           file `/Users/dkrauss/documents/work/glibc-build/bits/stdio_lim.h' does not exist.           Looking for an implicit rule for `/Users/dkrauss/documents/work/glibc-build/bits/stdio_lim.h'.           Trying pattern rule with stem `lim'.           Trying implicit prerequisite `/Users/dkrauss/documents/work/glibc-build/bits/stdio_lim.st'.           Found an implicit rule for `/Users/dkrauss/documents/work/glibc-build/bits/stdio_lim.h'.            ConsIDering target file `/Users/dkrauss/documents/work/glibc-build/bits/stdio_lim.st'.            Recently trIEd and Failed to update file `/Users/dkrauss/documents/work/glibc-build/bits/stdio_lim.st'.make[2]: *** No rule to make target `/Users/dkrauss/documents/work/glibc-build/bits/stdio_lim.st',needed by `/Users/dkrauss/documents/work/glibc-build/bits/stdio_lim.h'.  Stop.

这是它尝试以位为单位构建的第一个头.有一个文件stdio_lim.h.in,它是目录中唯一的.in文件.是否应该将某些规则连接到.in?最佳答案为了正确构建glibc,您需要来自linux系统的头文件 – 可能内核头文件就足够了.

这是因为在该系统的软件的任何正常构建中都需要这些头,并且在交叉编译时也是如此.

自从我创建交叉编译器以来已经很长时间了,所以我不能告诉你如何使用glibc来构建标题,但我相信它可以直接进行.

总结

以上是内存溢出为你收集整理的从OS X交叉编译到Linux全部内容,希望文章能够帮你解决从OS X交叉编译到Linux所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1048647.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)