当使用CMake进行交叉编译时,通常通过CMAKE_TOOLCHAIN_FILE选项指定一个工具链文件。 在GNU术语中 ,可以使用这个文件指定主机体系结构工具集。 但是,通常不能期望能够执行任何使用该工具链构build的任何东西。 因此,经常需要为构build体系结构编译一些构build工具。 考虑以下设置。 我有两个源文件genfoo.c和bar.c 在构build过程中,需要编译并运行genfoo.c 。 它的输出需要写入foo.h 然后我可以编译bar.c ,其中#include "foo.h" 。 由于CMake默认使用主机架构工具链,所以bar.c的说明很简单。 但是,我如何告诉它使用构build体系结构工具链来编译genfoo.c ? 简单地说add_executable(genfoo genfoo.c)将导致使用错误的编译器。
我想交叉编译Qt库(最终是我的应用程序)使用Linux x86_64主机的Windows x86_64目标。 我觉得我很接近,但是我可能对这个过程的某些部分有一个根本性的误解。 我开始在我的Fedora机器上安装所有的mingw包,然后修改win32-g++ qmake.conf文件以适合我的环境。 不过,我似乎被Qt: -platform和-xplatform一些看似明显的configuration选项卡住了。 Qt的文档说,平台应该是主机架构(你正在编译的地方),- -xplatform平台应该是你希望部署的目标平台。 在我的例子中,我设置了-platform linux-g++-64和-xplatform linux-win32-g++ ,其中linux-win32-g ++是我修改的win32-g ++configuration。 我的问题是,执行configuration这些选项后,我看到它调用我的系统的编译器,而不是交叉编译器(x86_64-w64-mingw32-gcc)。 如果我省略-xplatform选项并将-platform设置为我的目标规范(linux-win32-g ++),那么它会调用交叉编译器,但是如果发现某些与Unix相关的函数没有定义,则会发生错误。 以下是我最近一次尝试的一些输出: http : //pastebin.com/QCpKSNev 。 问题: 当从Linux主机交叉编译类似Qt for Windows的应用程序时, 是否应该调用本地编译器? 也就是说,在交叉编译过程中,我们不应该只使用交叉编译器吗? 当我指定-xplatform选项时,我不明白为什么Qt的configuration脚本会尝试调用我的系统的本机编译器。 如果我正在使用mingw交叉编译器,那么我何时需要处理规格文件? 海湾合作委员会的规格文件仍然是我的一个谜,所以我想知道如果这里的一些背景将帮助我。 一般来说,除了在我的qmake.conf中指定一个交叉编译器之外,我还需要考虑什么呢?
我想将我的C / C ++应用程序移植到OS X. 我没有Mac,但是我有Linux和Windows。 有这个工具吗?
有没有用户友好的工具,从Windows到Linux交叉编译?
我正在尝试为我的Ubuntu机器上的Raspberry Pi进行交叉编译。 在我最初的尝试中,我使用的是arm-linux-gnueabi编译器,它在Ubuntu的repo中可用。 我得到了这个工作。 我能够build立我所有的依赖关系,并在我的cmake项目中使用交叉编译器。 但是,我相信我应该使用hf版本,所以我切换到arm-linux-gnueabihf。 然后我意识到,这不适用于Raspberry Pi,因为它是armv6。 谷歌search后,我find了GitHub的预build工具链: https : //github.com/raspberrypi/tools 。 我下载了工具链,但是我不太懂得如何“安装”它。 我将这些文件解压到我的主目录。 目录结构如下所示: /gcc-linearo-arm-linux-gnueabihf-raspbian /arm-linux-gnueabihf /bin (contains g++, gcc, etc) /lib (contains libstdc++ library) /bin (contains arm-linux-gnueabihf-g++, arm-linux-gnueabihf-…) /lib (gcc lib stuff) 如果将目录更改为INNER bin文件夹,我可以从terminal编译testing程序,而不会出现任何问题。 ~/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/ arm-linux-gnueabihf/bin$ g++ test.cpp -o test 然后,我试图在OUTER bin文件夹中编译一个testing程序,其中包含工具的前缀版本。 ~/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin$ arm-linux-gnueabihf-g++ test.cpp -o test 但是,当我尝试使用编译器(从内部bin目录之外)时,无法find工具链附带的libstdc ++共享库: arm-linux-gnueabihf-gcc: error while […]
我正在尝试为android编译ffmpeg。 我已经find了这个主题的几个职位,但非这些似乎工作。 如果试图构buildffmpeg,就像发布在[1]上一样。 有没有人成功地使用这些教程编译ffmpeg? 我不知道如何实现步骤4到5。 STEP4:configuration… 第5步:cd到你的NDK根目录,inputmake TARGET_ARCH = arm APP = ffmpeg-org 在我看来,构build像这样的应用程序在第5步中的教程中进行了解释,需要以前的一些步骤。 不幸的是我没有在文件夹中的应用程序。 我正在使用当前的android ndk release 3,并从[3]和[4]中检出了实际的ffmpeg版本。 我很感谢每一个build议。 [1] http://slworkthings.wordpress.com/ [2] http://gitorious.org/~olvaffe/ffmpeg/ffmpeg-android [3] http://ffmpeg.org/download.html