关于Mac上交叉编译几个小问题,求解答
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Mac上交叉编译几个小问题,求解答相关的知识,希望对你有一定的参考价值。
参考技术A 我是打算编译给模拟器用的库喔。sysroot设置成simulator.platform相应的目录了。但是还是出现clang: warning: using sysroot for 'iPhoneSimulator' but targeting 'MacOSX'。虽然是warning但是不知道有没影响。 参考技术B 1、首先在 MacBook Air 关上的情况下,按着 Command 及 R 两个按键不放手,然后同时按下最右上角的开关键一下(记着此时仍然继续按着 Command + R 键)。2、当进入至此介面后,就可以放开所有按键。当中有 4 个选项:Restore From Time Machine Backup 是从你过去备份至 Time Machine 的映像档回复电脑、Reinstall Mac OS X 顾名思义就是重新安装 Mac OS X Lion、Get Help Online 则是从线上撷取帮助档了解重装步骤及常见问题、而最后的 Disk Utility 则是管理硬碟之用,包括:分割磁区、将磁碟区格式化等。
3、在画面右上角,可以连接 Wi-Fi,建议大家必须连接,以确保下载及安装过程一切顺利。
4、点按「Get Help Online」就可以看到回复系统的所有资料及步骤。
5、最有趣的是,它其实是一个完整版的 Safari,在此已可以上网浏览网页。
6、如果点按 Restore From Time Machine Backup,就可以进入此介面。记着此时要将过去用作 Time Machine 备份的外置硬碟与 MacBook Air 接驳,再点按「Continue」。
7、如果已接驳了硬碟,应可在此页看到过去的备份档,只要选取了再点按「Continue」就可以将 MacBook Air 回复至备份时的情况。由于未有使用 Time Machine,所以不在此再多述此项功能了。
8、点按「Partitions」,再拉动下方左侧白色部分右下角的位置,就可以调节使用 Macintosh HD 的部分。完成后再在右方点按未设定的部分,再建立新磁区就可以了。当然,安装了 Mac OS X Lion 后,大家亦随时可以在「Utilities」中的「Disk Utility」进行这项动作。
9、点按「Reinstall Mac OS X」,然后会弹出在安装前会先与 Apple 的伺服器取得认证,记得此时一定要接驳互联网,然后点按「Continue」继续。
10、点按「Reinstall Mac OS X」,然后会弹出在安装前会先与 Apple 的伺服器取得认证,记得此时一定要接驳互联网,然后点按「Continue」继续。
11、会看到一段 Agreement,点按「Agree」后再点按上方的「Agree」即可。
12、再选择希望将 Mac OS X Lion 安装到哪个磁碟区。
13、开始重装了,等等吧!这个下载步骤大约需要 1 小时左右(在 Wi-Fi 连线情况下)。
在linux上交叉编译c++到windows
【中文标题】在linux上交叉编译c++到windows【英文标题】:cross compile c++ on linux to windows 【发布时间】:2014-05-06 09:17:04 【问题描述】:clang++ main.cpp -std=c++11 -target x86_64-unknown-win32 -I/usr/lib/gcc/x86_64-w64-mingw32/4.6/include/
main.cpp:6:10: fatal error: 'string' file not found
#include <string>
^
1 error generated.
这很奇怪,因为:
/usr/lib/gcc/x86_64-w64-mingw32/4.6/include/ssp$ ls
ssp.h stdio.h string.h unistd.h
结果是一样的:
clang++ main.cpp -std=c++11 -target x86_64-unknown-win32 -I/usr/lib/gcc/x86_64-w64-mingw32/4.6/include/ssp
好吧。我曾经使用以下方法将c代码从linux编译到windows就好了:
x86_64-w64-mingw32-gcc main.c
我试过了:
x86_64-w64-mingw32-g++ -std=c++0x main.cpp
还有:
x86_64-w64-mingw32-g++ -std=c++0x main.cpp -I/usr/lib/gcc/x86_64-w64-mingw32/4.6/include
仍然会给出一堆错误,例如
main.cpp:70:23: sorry, unimplemented: non-static data member initializers
main.cpp:70:23: error: in-class initialization of static data member ‘origin’ of non-literal type
main.cpp: In constructor ‘Item::Item(std::string)’:
main.cpp:83:18: error: ‘stoul’ is not a member of ‘std’
main.cpp:88:4: error: ‘origin’ was not declared in this scope
main.cpp:89:17: error: ‘stof’ is not a member of ‘std’
main.cpp: In function ‘std::ostream& operator<<(std::ostream&, const Item&)’:
....
x86_64-w64-mingw32-g++ (GCC) 4.6.3
似乎是 ubuntu repo 上的最新版本。
我迷路了..为什么该死的铿锵声不会使用标题。为什么 x86_64-w64-mingw32-g++ 不听它应该使用 c++11 标准。
【问题讨论】:
string.h 和 string 一样吗?我认为不会。 Mingw 众所周知缺乏构建,并且从包管理器安装时通常已经过时了。您显示的错误可能是因为该版本实际上不支持它们。 乍一看,您使用的是 GCC 4.6.3。那肯定不支持你所追求的功能,你应该考虑将 MinGW 更新到 4.8 或 4.9 版本(我不知道是否支持 4.9) @CoffeeandCode 请不要传播 FUD。你不知道你在说什么。 @C19 Ubuntu 14.04 提供了MinGW-w64 GCC 4.8.2,它应该支持你所需要的。是时候更新您的系统了!请注意,如果您使用 this patch 自己构建 clang,您应该能够将 Clang 与您的 MinGW-w64 标头/库一起使用。它仍将使用 MinGW-w64 GCC 的 libstdc++,因此请确保您安装的库版本具有所需的功能。 【参考方案1】:您使用的 GCC 版本不支持non-static data member initializers
,如图here。找出 here 哪个版本的 GCC 支持您所需的 C++11 功能集。
【讨论】:
以上是关于关于Mac上交叉编译几个小问题,求解答的主要内容,如果未能解决你的问题,请参考以下文章
在ubuntu上交叉编译Boost 1.57.0 for arm