我想让我的C++项目跨平台,我正在考虑使用Cygwin/MinGW.但它们之间有什么区别?
另一个问题是我是否能够在没有Cygwin/MinGW的系统上运行二进制文件?
我正在制作一个小词汇记忆程序,其中的单词将随机闪现在我的意思中.我想使用标准的C++库,就像Bjarne Stroustroup告诉我们的那样,但我遇到了一个看似奇怪的问题.
我想将long
整数更改std::string
为能够将其存储在文件中.我也受雇于to_string()
此.问题是,当我使用g ++(版本4.7.0,如其--version标志中所述)编译它时,它说:
PS C:\Users\Anurag\SkyDrive\College\Programs> g++ -std=c++0x ttd.cpp
ttd.cpp: In function 'int main()':
ttd.cpp:11:2: error: 'to_string' is not a member of 'std'
Run Code Online (Sandbox Code Playgroud)
我的程序给出了这个错误:
#include <string>
int main()
{
std::to_string(0);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是,我知道它不可能是因为msdn库清楚地说它存在并且早先关于Stack Overflow的问题(对于g ++版本4.5)说它可以用-std=c++0x
旗标打开.我究竟做错了什么?
我使用Code :: Blocks在C++中创建了一个简单的程序.
如果我从Code :: Blocks运行它,它可以正常工作; 但如果我通过双击可执行文件来运行它,会弹出一个窗口,显示以下消息:
程序无法启动,因为您的计算机缺少libgcc_s_dw2-1.dll.
尝试重新安装该程序以解决此问题.
那么,问题是什么?我该怎么做才能修复它?
我找不到足够的信息来决定我应该使用哪个编译器来编译我的项目.模拟一个过程的不同计算机上有几个程序.在Linux上,我正在使用GCC.一切都很棒.我可以优化代码,它可以快速编译并使用不那么多的内存.
我用MSVC和GCC编译器做自己的基准测试.后来一个产生稍快的二进制文件(对于每个子体系结构).虽然编译时间远远超过MSVC.
所以我决定使用MinGW.但是在MinGW中找不到有关异常处理方法及其实现的任何解释.我可以为不同的操作系统和体系结构使用不同的发行版.
注意事项:
我正在尝试使用mingw(64位)在win 7 64位中使用cython编译python扩展.
我正在使用Python 2.6(Active Python 2.6.6)和足够的distutils.cfg文件(将mingw设置为编译器)
执行时
> C:\Python26\programas\Cython>python setup.py build_ext --inplace
Run Code Online (Sandbox Code Playgroud)
我得到一个错误,说gcc没有-mno-cygwin选项:
> C:\Python26\programas\Cython>python setup.py build_ext --inplace
running build_ext
skipping 'hello2.c' Cython extension (up-to-date)
building 'hello2' extension
C:\mingw\bin\gcc.exe -mno-cygwin -mdll -O -Wall -IC:\Python26\include -IC:\Python26\PC -c hello2.c -o build\temp.win-amd64-2.6\Release\hello2.o
gcc: error: unrecognized command line option '-mno-cygwin'
error: command 'gcc' failed with exit status 1
Run Code Online (Sandbox Code Playgroud)
gcc是:
C:\>gcc --version
gcc (GCC) 4.7.0 20110430 (experimental)
Copyright (C) 2011 Free Software Foundation, Inc.
Run Code Online (Sandbox Code Playgroud)
我该怎么办呢?
我正在Windows上安装mingw-w64,有两个选项:win32线程和posix线程.我知道win32线程和pthreads之间的区别是什么,但我不明白这两个选项之间的区别.我怀疑如果我选择posix线程,它将阻止我调用WinTI函数,如CreateThread.
看来这个选项指定某些程序或库将使用哪个线程API,但是通过什么?通过GCC,libstdc ++还是别的什么?
我发现了这个: 在windows的gcc端口中thread_posixs和thread_win32之间的区别是什么?
简而言之,对于这个版本的mingw,threads-posix版本将使用posix API并允许使用std :: thread,而threads-win32将使用win32 API,并禁用std :: thread部分标准.
好的,如果我将选择win32线程,那么std :: thread将不可用,但仍将使用win32线程.但用什么?
我刚刚在Windows上安装了MinGW,我无法复制/粘贴,因为我习惯在Linux甚至是PuTTY上.复制和粘贴文本(例如从chrome)到MinGW shell的技巧是什么?
在Windows中,使用mingw的gcc,无论如何都要指定输出exe文件是采用图标文件,以便exe文件在资源管理器中显示该图标?
我想使用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主机交叉编译Qt for Windows之类的东西时,是否应该调用本机编译器?也就是说,在交叉编译过程中,我们不应该只使用交叉编译器吗?当我指定-xplatform
选项时,我不明白为什么Qt的configure脚本会尝试调用我的系统的本机编译器.
如果我使用的是mingw交叉编译器,何时需要处理specs文件?GCC的规范文件对我来说仍然是一个谜,所以我想知道这里的一些背景是否对我有帮助.
一般来说,除了在我的qmake.conf中指定交叉编译器之外,我还需要考虑什么?