Questions tagged «cross-compiling»

对于一般的交叉编译问题,其中使用单独的“托管”环境为“目标”平台构建。

8
在Ubuntu中的32位上交叉编译64位程序时缺少“ bits / c ++ config.h”
我正在运行32位版本的Ubuntu 10.10,并尝试交叉编译为64位目标。根据我的研究,我已经安装了g ++-multilib软件包。 该程序是一个非常简单的问候世界: #include <iostream> int main( int argc, char** argv ) { std::cout << "hello world" << std::endl; return 0; } 编译: g++ -m64 main.cpp 错误: In file included from main.cpp:1: /usr/include/c++/4.4/iostream:39: fatal error: bits/c++config.h: No such file or directory compilation terminated. 我找到了一个c++config.h文件,但它们位于中的“没有” 中的i486-linux-gnu和i686-linux-gnu目录下。/usr/include/c++/4.4/c++config.h/usr/include/c++/bits 关于我所缺少的任何想法?不带-m64标志的编译工作正常(a.out已创建并正确运行)。 编辑由于@nightcracker的提示,我对32位和64位系统的include结构进行了更多研究。我在下面添加了一个可以暂时“解决”问题的答案,但是我认为它将在下次更新时中断。基本上,我缺少一个名为的目录/usr/include/c++/4.4/i686-linux-gnu/64,该目录应包含一个名为的子目录bits,该子目录具有丢失的包含文件。知道应该由哪个软件包来处理吗?

11
编译Nachos源代码时出现错误“ gnu / stubs-32.h:没有这样的文件或目录”
我正在尝试在笔记本电脑上安装Nachos,并且笔记本电脑上具有Ubuntu 11.04。 代码在C语言中,因此要构建它,我假设我将需要交叉编译器。这是我的问题所在。我使用以下命令下载了MIPS交叉编译器的源代码 wget http://mll.csie.ntu.edu.tw/course/os_f08/assignment/mips-decstation.linux-xgcc.gz 我用解压缩 tar zxvf mips-decstation.linux-xgcc.gz 没关系,但是当我尝试使用make构建nachos os的源代码时,出现此错误- /usr/include/gnu/stubs.h:7:27: fatal error: gnu/stubs-32.h: No such file or directory compilation terminated. make: *** [bitmap.o] Error 1 我正在尝试按照此处给出的说明进行操作-http: //mll.csie.ntu.edu.tw/course/os_f08/217.htm,并且除我尝试使用make之外,其他一切都正常。

6
交叉编译在OSX上运行?
我正在尝试在OSX上交叉编译go应用程序,以为Windows和Linux构建二进制文件。我已经阅读了所有可以在网上找到的东西。我发现的最接近的示例已发布(除了有关go-nuts邮件列表的许多未完成的讨论之外): http://solovyov.net/en/2012/03/09/cross-compiling-go/ 但它不适用于我的安装。我去了1.0.2。由于1.0.2是最近的版本,因此在我看来上述所有示例均不适用于该版本。 试图./make.bash --no-clean与ENV vars设置为386 / windows一起使用,它确实构建了go,但是它为我的安装构建了go,darwin/amd64并且完全忽略了ENV中假设构建其他编译器的设置。 有没有人建议如何做到(如果可以做到的话)?


8
如何在我的Linux主机上安装Raspberry Pi交叉编译器?
我正在尝试为在我的Ubuntu计算机上工作的Raspberry Pi进行交叉编译。 在最初的尝试中,我使用的是arm-linux-gnueabi编译器,该编译器可在Ubuntu存储库中找到。我得到了这个工作。我能够建立所有依赖关系,并在cmake项目中使用交叉编译器。 但是,我相信我应该使用hf版本,因此我切换到了arm-linux-gnueabihf。然后我意识到这对Raspberry Pi不起作用,因为它是armv6。 谷歌搜索后,我从GitHub找到了预构建的工具链。 我下载了工具链,但是我不太了解如何“安装”它。我将文件提取到我的主目录。目录结构如下所示: /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文件夹,则可以从终端编译测试程序而不会出现任何问题。 ~/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/ arm-linux-gnueabihf/bin$ g++ test.cpp -o test 然后,我尝试在OUTER bin文件夹中编译一个测试程序,其中包含工具的前缀版本。 ~/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin$ arm-linux-gnueabihf-g++ test.cpp -o test 但是,当我尝试现在(从内部bin目录外部)使用编译器时,它找不到工具链随附的libstdc ++共享库: arm-linux-gnueabihf-gcc: error while loading shared libraries: libstdc++.so.6: …

4
未定义对静态成员的引用
我正在使用交叉编译器。我的代码是: class WindowsTimer{ public: WindowsTimer(){ _frequency.QuadPart = 0ull; } private: static LARGE_INTEGER _frequency; }; 我收到以下错误: 未定义对WindowsTimer :: _ frequency的引用 我也尝试将其更改为 LARGE_INTEGER _frequency.QuadPart = 0ull; 要么 static LARGE_INTEGER _frequency.QuadPart = 0ull; 但我仍然遇到错误。 谁知道为什么?

5
如何配置Qt以便从Linux到Windows目标进行交叉编译?
我想使用Linux x86_64主机交叉编译Windows x86_64目标的Qt库(最终编译我的应用程序)。我感觉自己已经接近了,但是对于这个过程的某些部分我可能会有根本的误解。 首先,我在Fedora机器上安装了所有mingw软件包,然后修改win32-g++qmake.conf文件以适合我的环境。但是,我似乎对Qt:-platform和的一些看似显而易见的配置选项感到困惑-xplatform。Qt文档说-platform应该是主机体系结构(要在其中进行编译),并且-xplatform应该是要为其部署的目标平台。在我的情况下,我设置-platform linux-g++-64和-xplatform linux-win32-g++其中的linux-Win32的克++是我的改性Win32的克++结构。 我的问题是,在使用这些选项执行configure之后,我看到它调用系统的编译器,而不是交叉编译器(x86_64-w64-mingw32-gcc)。如果我省略该-xplatform选项并设置-platform为我的目标规范(linux-win32-g ++),它将调用交叉编译器,但是在发现未定义某些与Unix相关的函数时出错。 这是我最新尝试的一些输出:http : //pastebin.com/QCpKSNev。 问题: 从Linux主机交叉编译Windows版Qt之类的东西时,是否应调用本机编译器?也就是说,在交叉编译过程中,我们不应该仅使用交叉编译器吗?指定-xplatform选项时,我看不到为什么Qt的configure脚本试图调用系统的本机编译器。 如果我使用的是mingw交叉编译器,什么时候需要处理specs文件?GCC的规范文件对我来说还是一个谜,所以我想知道这里的背景知识是否对我有帮助。 通常,除了在我的qmake.conf中指定交叉编译器之外,我还需要考虑什么?


3
如何使用CMAKE从命令行在Windows上构建x86和/或x64?
一种使用cmake在Windows上使用Visual Studio构建x86的方法如下: 启动x86的Visual Studio命令提示符 运行cmake: cmake -G "NMake Makefiles" \path_to_source\ 纳马克 一种使用cmake在Windows上使用Visual Studio构建x64的方法如下: 启动x64的Visual Studio命令提示符 运行cmake: cmake -G "NMake Makefiles" \path_to_source\ 纳马克 使用Cmake,如何编译一个或两个体系结构?(例如Visual Studio如何在IDE中执行此操作)

5
如何通过修改命令行中给出的路径名来停止MinGW和MSYS
在Windows上,我正在使用CodeSourcery的交叉编译器套件为ARM / Linux交叉编译程序。我使用MinGW MSYS作为我的命令解释器,通常它会破坏我的路径和路径名。例如,要构建程序,我调用 arm-none-linux-gnueabi-gcc.exe -Wall -g \ -Wl,--dynamic-linker=/usr/lib/myrpath/ld-linux.so.3 \ -Wl,-rpath=/usr/lib/myrpath \ -I../targetsysroot/usr/include \ myprogram.c -o myprogram 当然,我想/usr/lib/myrpath将逐字记录插入myprogram可执行文件中-我要编译的ARM Linux目标不使用MinGW或MSYS。但是,最终结果如下: ... 0x0000000f (RPATH) Library rpath: [C:/MinGW/msys/1.0/lib/myrpath] ... 不完全是我想要的。如果直接在cmd.exe命令行上调用GCC,则会在可执行文件中获得正确的rpath。如果我在MSYS命令行上调用GCC,则会得到混乱的rpath。如果我使用从cmd.exe命令行使用make运行的Makefile调用GCC,我仍然会得到错误的rpath(!) 有什么想法可以关闭这种令人讨厌的行为吗?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.