Articles of 交叉编译

如何在Linux上编译英特尔Mac二进制文件?

我正在读一篇关于在Linux上交叉编译OSX的文章,但是很难理解。 我需要什么工具? 什么configuration是必要的? 有没有用于创build包的工具?

是否可以在Linux上设置一个gcc交叉编译器来在32位体系结构上编译64位目标?

我知道你可以通过使用-m32标志来编译64位Linux上的32位目标,但是也可以使用-m64标志在32位机器上编译为64位? 或者,您是否需要build立一个支持64位目标的交叉gcc工具链,这可能在32位机器上? 问候,约翰

寻找Linux上的Win exe所需的DLL(用mingw交叉编译)?

我在Linux上使用MinGW来交叉编译到Windows。 做到这一点是一件轻而易举的事情。 把所需的DLL包装起来并不那么简单。 目前的解决scheme是在Windows上运行可执行文件并复制到DLL,直到它真正运行。 是否有一个Linux的工具,列出我的Windows .exe所需的DLL? (类似于ldd和DependencyWalker的组合)

在Mac OS X上构build交叉工具链的最佳方法

我花了三个星期的时间研究Mac OS X下的交叉开发。我想要获得两个单独的结果,但我相信他们可以通过相同的途径达成。 我要 设置distcc来帮助我使用最近在家中使用的iMac(OS X 10.6,64位本机)的旧Gentoo笔记本电脑,我也用于iOS开发,所以Xcode 4工具已经存在; 开发我的宠物项目,这是一个精灵内核的x86,x86_64,和武装(我会停在这里,因为它是OT)。 所以,经过我们在这些情况下所做的大量思考之后,我想出了一个想法,为了达到第一个目标,我需要build立一个i686-pc-linux-gnu工具链(或者是i686-unknown-linux -gnu?)与所有适当的版本(如gcc-4.4),并使其可由distcc调用。 这似乎是一个合理的任务,但不幸的是似乎有更清晰的工具和指令来build立像sparc或mips这样的晦涩难懂的工具链,而不是一个合理的更新的资源如何去x86最好的方式。 因此,第一个问题:有没有人成功地build立这样一个工具链,感觉像分担痛苦? 🙂 第二个目标。 我目前的工作台是由Gentoo在i686笔记本电脑(是的,与第一个目标相同)上制作的,我使用QEMU来testing它(它的gdb集成非常棒)。 我真正想做的就是在旅途中继续使用笔记本电脑(我做了很多通勤),并在家里继续工作和testingiMac(git在这方面非常棒)。 因此,第二个问题:有没有人做过这样的事情,想分享? 我真的很感激任何input。 认真。 编辑我知道有关MacPorts,crosstool和crosstool-ng。 我尝试从MacPorts安装i386-elf-binutils 2.18,以发现我的笔记本电脑中有2.20。 此外,我不能让gcc44生产i686-pc-linux-gnu精灵对象,使用i386-elf-gcc不是一个选项,因为我需要4.4和打包的是4.3。

构build用于在Android平板电脑上运行PHP和MySQL的Android应用程序

我想在我的Android设备上运行PHP + MySQL服务器。 人们似乎build议应用程序,如KSWeb和位网站 。 build议的其他解决scheme是我安装了一个应用程序,允许我在Android上运行Linux 。 这需要Android设备根植。 🙁 我不想为此使用任何其他应用程序。 所以我想build立一个类似于KSWeb的应用程序。 我已经search了如何开始build设这样的应用程序,但迄今为止还没有帮助。 任何指导如何去做这个? 我的意思是,KSWeb如何在没有root的情况下构build这样的东西。 :o 任何有关如何构build这个应用程序的指导将是非常有帮助的。 在某处我被告知为ARMv6编译的二进制文件,但是我不知道如何开始。 NDK能对我有用吗? 请帮忙。

cmake:从脚本设置环境variables

我有一个脚本来设置交叉编译所需的所有variables。 这只是其中的一部分: export CONFIG_SITE=~/workspace/eldk-5.4/powerpc/site-config-powerpc-linux export CC="powerpc-linux-gcc -m32 -mhard-float –sysroot=~/workspace/eldk-5.4/powerpc/sysroots/powerpc-linux" export CXX="powerpc-linux-g++ -m32 -mhard-float –sysroot=~/workspace/eldk-5.4/powerpc/sysroots/powerpc-linux" export CPP="powerpc-linux-gcc -E -m32 -mhard-float –sysroot=~/workspace/eldk-5.4/powerpc/sysroots/powerpc-linux" export AS="powerpc-linux-as " export LD="powerpc-linux-ld –sysroot=~/workspace/eldk-5.4/powerpc/sysroots/powerpc-linux" export GDB=powerpc-linux-gdb 如果我使用source environment-setup-powerpc-linux ,所有的环境variables都被导入到当前的shell会话中,我可以编译我的例子。 是否有可能在cmake中导入这些variables? 如果是的话,怎么样? 更多的细节: 我正在使用ELDK v5.4 ,它的安装脚本会生成一个脚本来设置所有的环境variables 我发现这个教程 ,它解释了如何手动设置交叉编译,而不是如何使用脚本,它设置的一切 如果我在设置cmake之前调用脚本,一切正常,我可以交叉编译,但我希望cmake调用脚本

是否有用于Linux的Clang mingw交叉编译器?

在Linux中,特别是在Debian或Ubuntu上,预先打包的Mingw交叉编译器可以生成Windows EXE。 但有没有类似的交叉编译器使用Clang而不是GCC? (或者如何build立这样一个野兽的指示。)

arm-linux-gnu-gcc致命错误:stdio.h:没有这样的文件或目录

这些是/ usr / bin中的文件 [root@xilinx bin]# ls -ld arm* -rwxr-xr-x. 1 root root 691752 Feb 5 2013 arm-linux-gnu-addr2line -rwxr-xr-x. 1 root root 721416 Feb 5 2013 arm-linux-gnu-ar -rwxr-xr-x. 1 root root 1297632 Feb 5 2013 arm-linux-gnu-as -rwxr-xr-x. 1 root root 689168 Feb 5 2013 arm-linux-gnu-c++filt -rwxr-xr-x. 1 root root 545664 Feb 6 2013 arm-linux-gnu-cpp -rwxr-xr-x. […]

如何使用crosstool-NG来改变GCC的“加拿大十字”汇编的主机types

我已经安装了crosstool-NG,并在主机+构build的x86机器上构build了GCC,该机器的目标是arm-unknown-linux-gnueabi。 然后,我使用arm-unknown-linux-gnueabi-gcc编译在我的ARM板上运行良好的程序。 我现在想要构buildGCC,将ARM托pipe在ARM上。 我相信这个术语是 build=i486-pc-linux-gnu target=arm-unknown-linux-gnueabi-gcc host=arm-unknown-linux-gnueabi-gcc 我该怎么做呢? 我是否运行./configure进行crosstool-NG传递–host = arm-unknown-linux-gnueabi-gcc? 或者我更改CC / etc的环境variables?

如何从共享库中导出符号

我在Windows主机上使用RVDS编译器,使用* .o目标代码文件(C源代码)创build了共享库(* .so)。 我把这个共享对象与一个应用程序(在Linux主机上使用gcc for arm target)连接起来,并获得一个可执行文件,在运行时产生分段错误(我知道我必须debugging它! 如果我创build一个具有相同源文件的静态库,然后与应用程序链接,然后执行应用程序,它可以正常工作,而不是创build共享库。 所以我的问题是: 我是否需要使用一些结构将符号(导出到应用程序的函数)或任何其他符号显式地导出到我的源文件中,以便在与应用程序链接时正常工作? 需要什么,我该怎么做? 共享库是如何工作的,也就是说,当库被创build时,将在库中给出函数将被加载和运行的地址。 应用程序(main())如何parsing要执行库函数的地址? 静态库是如何工作的,即在静态库的情况下,这个地址是如何规定和解决的? 谢谢。