javascript

java

python

c#

android

node.js

reactjs

c++

php

html

jquery

css

git

.net

ios

ruby-on-rails

sql

c

string

ruby

c-为什么数组的最大大小“太大”?

我对这个答案有相同的印象,该标准始终保证size_t的大小足以容纳给定系统的最大类型。

但是,此代码无法在gcc / Mingw上编译:

#include <stdint.h>
#include <stddef.h>

typedef uint8_t array_t [SIZE_MAX];

错误:数组'array_t'的大小太大

我是否误解了这里的标准? 对于给定的实现,是否允许size_t太大? 还是这是Mingw中的另一个错误?


编辑:进一步的研究表明

typedef uint8_t array_t [SIZE_MAX/2];   // does compile
typedef uint8_t array_t [SIZE_MAX/2+1]; // does not compile

碰巧与

#include <limits.h>

typedef uint8_t array_t [LLONG_MAX];           // does compile
typedef uint8_t array_t [LLONG_MAX+(size_t)1]; // does not compile

因此,我现在倾向于认为这是Mingw中的错误,因为基于有符号整数类型设置最大允许大小没有任何意义。

trans by 2019-11-10T03:27:25Z

如何在Windows的MinGW中更新GCC?

我习惯在Ubuntu上之前从源代码手动安装GCC,这是一个痛苦的过程。 所以我真的不想重复此过程。 当前,我的机器上安装了MinGW和GCC(4.6.2)。 那么有没有一种简单的方法可以在不完全从源代码构建GCC的情况下进行更新? 有人做过可以分享给我一些提示吗?

trans by 2019-11-08T13:47:27Z

生成文件-找不到CMAKE_MAKE_PROGRAM

我已经和Cmake交到了尽头。 它具有巨大的潜力,但我似乎无法使其找到基本的系统工具(即“ make”)来发挥作用。

症状

Cmake和Cmake GUI生成以下内容(删除CMakeCache.txt文件之后):

Processing top-level CMakelists.txt for project swb
CMake Error: CMake was unable to find a build program corresponding to "MinGW Makefiles".
CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool.

我专注于在此问题中找到“ make”,但是,我也遇到了许多与CMake相同的问题,它们找不到库和其他实用程序文件(链接器,nm,ar等)。 我下面列出的技术似乎使CMake在Linux下运行时可以找到这些文件。

系统

Windows 7(64位); MinGW的多个版本(32位/ 64位); Cmake 2.8.4;MinGW的NONSTANDARD安装位置(c:/ MinGW-32)。

我尝试过的东西

  1. CMakelists.txt在文件的前10行中包含“ SET(CMAKE_MAKE_PROGRAM c:/MinGW-32/bin/make.exe FORCE)”。

  2. CMakelists.txt的早期版本包含:

    find_program(CMAKE_MAKE_PROGRAM
      NAMES make
            make.exe
      DOC "Find a suitable make program for building under Windows/MinGW"
      HINTS c:/MinGW-32/bin )  
    
  3. 在运行CMake或CMake-GUI之前,请在cmd.exe环境变量中设置CMAKE_MAKE_PROGRAM。

  4. 使用“工具链”文件来标识CMAKE_MAKE_PROGRAM以及CMAKE_C_COMPILER等。

一件有效的事

如果使用GUI填充CMAKE_MAKE_PROGRAM变量(“ C:/MinGW-32/bin/make.exe”),则CMake将成功创建构建文件。

问题

如果通过GUI识别make程序的名称,则可以使CMake正常工作。 如何使CMake无需用户干预Windows 7(64位)/ MinGW组合即可找到我的make程序?

trans by 2019-10-27T18:32:40Z

c-未知类型名称'uint8_t',MinGW

我在MinGW中使用C得到“未知类型名称'uint8_t'”和其他类似的名称。任何想法如何解决这个问题?

trans by 2019-10-11T12:49:28Z

构建过程-在Windows上运行CMake

我目前正在尝试让CMake在Windows 7(64位)系统上运行。 我想编译TagLib,以便以后与正在使用的Qt应用程序一起使用。 我想用MinGW编译它(不像其他问题那样使用Visual C ++)。

我下载了安装程序(cmake-2.8.3-win32-x86.exe)并进行安装(我也选择将CMake添加到我的路径中)。 然后,我转到目录CMakeLists.txt文件所在的目录,并运行mingw32-make.exe。然后,我收到了这个巨大的错误。

C:\Users\Joel\Downloads\taglib-1.6.3>cmake .
CMake Warning at CMakeLists.txt:1 (project):
  To use the NMake generator, cmake must be run from a shell that can use the
  compiler cl from the command line.  This environment does not contain
  INCLUDE, LIB, or LIBPATH, and these must be set for the cl compiler to
  work.


-- The C compiler identification is unknown
-- The CXX compiler identification is unknown
CMake Warning at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/Platform/Windows-cl.cmake:
28 (ENABLE_LANGUAGE):
  To use the NMake generator, cmake must be run from a shell that can use the
  compiler cl from the command line.  This environment does not contain
  INCLUDE, LIB, or LIBPATH, and these must be set for the cl compiler to
  work.
Call Stack (most recent call first):
  C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeCInformation.cmake:60 (INCLUDE)
  CMakeLists.txt:1 (project)


CMake Error: your RC compiler: "CMAKE_RC_COMPILER-NOTFOUND" was not found.   Please set CMAKE_RC_COM
PILER to a valid compiler path or name.
-- Check for CL compiler version
-- Check for CL compiler version - failed
-- Check if this is a free VC compiler
-- Check if this is a free VC compiler - yes
-- Using FREE VC TOOLS, NO DEBUG available
-- Check for working C compiler: cl
CMake Warning at CMakeLists.txt:2 (PROJECT):
  To use the NMake generator, cmake must be run from a shell that can use the
  compiler cl from the command line.  This environment does not contain
  INCLUDE, LIB, or LIBPATH, and these must be set for the cl compiler to
  work.


CMake Warning at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/Platform/Windows-cl.cmake:
28 (ENABLE_LANGUAGE):
  To use the NMake generator, cmake must be run from a shell that can use the
  compiler cl from the command line.  This environment does not contain
  INCLUDE, LIB, or LIBPATH, and these must be set for the cl compiler to
  work.
Call Stack (most recent call first):
  C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeCInformation.cmake:60 (INCLUDE)
  CMakeLists.txt:2 (PROJECT)


CMake Error at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeRCInformation.cmake:22
(GET_FILENAME_COMPONENT):
  get_filename_component called with incorrect number of arguments
Call Stack (most recent call first):
  C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/Platform/Windows-cl.cmake:28 (ENABLE_LANG
UAGE)
  C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeCInformation.cmake:60 (INCLUDE)
  CMakeLists.txt:2 (PROJECT)


CMake Error: CMAKE_RC_COMPILER not set, after EnableLanguage
CMake Error: your C compiler: "cl" was not found.   Please set CMAKE_C_COMPILER to a valid compiler
path or name.
CMake Error: Internal CMake error, TryCompile configure of cmake failed
-- Check for working C compiler: cl -- broken
CMake Error at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeTestCCompiler.cmake:52
(MESSAGE):
  The C compiler "cl" is not able to compile a simple test program.

  It fails with the following output:





  CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
  CMakeLists.txt:1 (project)


CMake Error: your C compiler: "cl" was not found.   Please set CMAKE_C_COMPILER to a valid compiler
path or name.
CMake Error: your CXX compiler: "cl" was not found.   Please set CMAKE_CXX_COMPILER to a valid compi
ler path or name.
-- Configuring incomplete, errors occurred!

C:\Users\Joel\Downloads\taglib-1.6.3>

考虑到它宣传自己是跨平台产品,令我感到非常惊讶的是它开箱即用地失败了。

我尝试将INCLUDE,LIB和LIBPATH(Windows环境变量)全部设置为我的MinGW二进制文件目录(C:\ MinGW \ bin),但它仍然给我相同的错误。 我还尝试将CMAKE_C_COMPILER和CMAKE_CXX_COMPILER设置为g ++(C:\ MinGW \ bin \ g ++)的位置。

有人知道这是怎么回事吗?

解:

根据tibur的建议,我运行了cmake GUI来创建make文件。然后,我进入目录taglib目录并运行mingw32-make.exe进行实际构建。

trans by 2019-10-06T05:55:24Z

如何配置Qt以便从Linux到Windows目标进行交叉编译?

我想使用Linux x86_64主机交叉编译Windows x86_64目标的Qt库(最终是我的应用程序)。 我感觉自己已经接近了,但是我可能对该过程的某些部分有一个根本性的误解。

首先,我在Fedora机器上安装了所有mingw软件包,然后修改-xplatform qmake.conf文件以适合我的环境。 但是,我似乎陷入了Qt的一些看似显而易见的配置选项:-platform-xplatform。Qt文档指出-platform应该是主机体系结构(正在编译的位置),而-xplatform应该是您想要的目标平台 部署。 就我而言,我设置了-platform linux-g++-64-xplatform linux-win32-g++,其中linux-win32-g ++是我修改后的win32-g ++配置。

我的问题是,使用这些选项执行configure之后,我看到它调用了系统的编译器,而不是交叉编译器(x86_64-w64-mingw32-gcc)。 如果我省略-xplatform选项,并将-platform设置为我的目标规范(linux-win32-g ++),它将调用交叉编译器,但是在发现未定义与Unix相关的函数时出错。

这是我最近尝试的一些输出:[http://pastebin.com/QCpKSNev。]

问题:

  1. 从Linux主机交叉编译Windows的Qt之类的东西时,是否应调用本机编译器? 也就是说,在交叉编译过程中,我们不应该仅使用交叉编译器吗? 当我指定-xplatform选项时,我看不到为什么Qt的configure脚本试图调用系统的本机编译器。

  2. 如果我使用的是mingw交叉编译器,什么时候需要处理specs文件? GCC的规范文件对我来说还是个谜,所以我想知道这里的背景知识是否对我有帮助。

  3. 通常,除了在我的qmake.conf中指定交叉编译器之外,我还需要考虑什么?

trans by 2019-09-23T20:59:28Z

windows - mingw-w64主题:posix vs win32

我在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线程。 但用什么?

trans by 2019-08-21T02:26:50Z

无法复制/粘贴mingw sh

我刚在Windows上安装了MinGW,而且我不能像以前那样在Linux甚至PuTTY上复制/粘贴。 复制和粘贴文本(例如从chrome)到MinGW shell的技巧是什么?

trans by 2019-08-13T22:55:14Z

使用cython和mingw进行编译会产生gcc:错误:无法识别的命令行选项'-mno-cygwin'

我尝试使用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

我得到一个错误,说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

gcc是:

C:\>gcc --version
gcc (GCC) 4.7.0 20110430 (experimental)
Copyright (C) 2011 Free Software Foundation, Inc.

我该怎么办呢?

trans by 2019-07-04T06:42:08Z

c ++ - 如何重定向qDebug,qWarning,qCritical等输出?

我正在使用很多qDebug() <<语句进行调试输出。 有没有任何跨平台的方法我可以将调试输出重定向到文件,而不需要求助于shell脚本? 我猜测open()和dup2()将在Linux中完成这项工作,但它是否可以在Windows中使用MinGW编译?

也许有Qt方法可以做到这一点?

trans by 2019-06-11T23:05:41Z

c ++ - sjlj vs dwarf vs seh有什么区别?

我找不到足够的信息来决定我应该使用哪个编译器来编译我的项目。 模拟一个过程的不同计算机上有几个程序。 在Linux上,我正在使用GCC。 一切都很棒。 我可以优化代码,它可以快速编译并使用不那么多的内存。

我用MSVC和GCC编译器做自己的基准测试。 后来一个产生稍快的二进制文件(对于每个子体系结构)。 虽然编译时间远远超过MSVC。

所以我决定使用MinGW。 但是在MinGW中找不到有关异常处理方法及其实现的任何解释。 我可以为不同的操作系统和体系结构使用不同的发行版。

注意事项:

  • 编译时间和内存对我的使用并不重要。 唯一重要的是运行时优化。 我需要我的程序足够快。 慢编译器是可以接受的。
  • 操作系统:Microsoft Windows XP / 7/8 / Linux
  • 架构:英特尔酷睿i7 / Core2 /以及运行XP:P的非常老的i686
trans by 2019-06-08T14:19:43Z

如何为从Linux到Windows目标的交叉编译配置Qt?

我想使用Linux x86_64主机交叉编译用于Windows x86_64目标的Qt库(最终是我的应用程序)。 我觉得我很亲密,但我可能对这个过程的某些部分有一个根本的误解。

我首先在我的Fedora机器上安装所有mingw软件包,然后修改win32-g++ qmake.conf文件以适合我的环境。 但是,我似乎陷入了Qt的一些看似明显的配置选项:-xplatform-platform. Qt文档说-platform应该是主机架构(你正在编译的地方)和-xplatform应该是你希望的目标平台 部署。 在我的例子中,我设置了-platform linux-g++-64-xplatform linux-win32-g++,其中linux-win32-g ++是我修改过的win32-g ++配置。

我的问题是,在使用这些选项执行configure后,我看到它调用我的系统编译器而不是交叉编译器(x86_64-w64-mingw32-gcc)。 如果我省略了-xplatform选项并将-platform设置为我的目标规范(linux-win32-g ++),它会调用交叉编译器,但在找到某些与Unix相关的函数时没有定义错误。

以下是我最近尝试的一些输出:[http://pastebin.com/QCpKSNev。]

问题:

  1. 当从Linux主机交叉编译Qt for Windows之类的东西时,是否应该调用本机编译器? 也就是说,在交叉编译过程中,我们不应该只使用交叉编译器吗? 当我指定-xplatform选项时,我不明白为什么Qt的configure脚本会尝试调用我的系统的本机编译器。

  2. 如果我使用的是mingw交叉编译器,何时需要处理specs文件? GCC的规范文件对我来说仍然是一个谜,所以我想知道这里的一些背景是否对我有帮助。

  3. 一般来说,除了在我的qmake.conf中指定交叉编译器之外,我还需要考虑什么?

trans by 2019-05-12T12:32:04Z

c ++ - 由于缺少libgcc_s_dw2-1.dll,程序无法启动

我使用Code :: Blocks在C ++中创建了一个简单的程序。

如果我从Code :: Blocks运行它,它可以正常工作; 但如果我通过双击可执行文件来运行它,会弹出一个窗口,显示以下消息:

程序无法启动,因为您的计算机缺少libgcc_s_dw2-1.dll。
尝试重新安装该程序以解决此问题。

那么,问题是什么? 我该怎么做才能修复它?

trans by 2019-05-05T04:30:59Z

windows - 如何在mingw-gcc编译的可执行文件中添加图标?

在Windows中,使用mingw的gcc,无论如何都要指定输出exe文件是采用图标文件,以便exe文件在资源管理器中显示该图标?

trans by 2019-04-23T04:12:40Z

c ++ - to_string不是std的成员,g ++(mingw)说

我正在制作一个小词汇记忆程序,其中的单词将随机闪现在我的意思中。 我想使用标准的C ++库,就像Bjarne Stroustroup告诉我们的那样,但我遇到了一个看似奇怪的问题。

我想将long整数更改为-std=c++0x,以便能够将其存储在文件中。 我已经雇用了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'

我的程序给出了这个错误:

#include <string>

int main()
{
    std::to_string(0);
    return 0;
}

但是,我知道它不可能是因为msdn库清楚地说它存在,而早期的Stack Overflow问题(对于g ++版本4.5)说它可以用-std=c++0x标志打开。 我究竟做错了什么?

trans by 2019-02-25T01:24:20Z

windows - Cygwin和MinGW有什么区别?

我想让我的C ++项目跨平台,我正在考虑使用Cygwin / MinGW。但它们之间有什么区别?

另一个问题是我是否能够在没有Cygwin / MinGW的系统上运行二进制文件?

trans by 2019-01-17T09:54:23Z

1 共1页