问题标签 [g++]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
942 浏览

c++ - 有没有办法在每个编译单元中包含一个头文件而不修改每个源文件?

鉴于以下情况:

  • 包含数千个 C++ 源文件的大型项目
  • 没有通用头文件(没有一个头文件包含在每个源文件中)
  • 所述项目是用 g++ 编译并由 make 管理的

有没有办法在每个编译单元中包含一个定义(例如宏)而不修改每个源文件以包含一个新的头文件?

0 投票
6 回答
21360 浏览

c++ - 使用 g++ 在 Windows 上生成文件,链接库

我已经厌倦了 MSVC++6 以及每个人总是告诉我它是一个糟糕的编译器等等。

所以现在我决定尝试使用 vim 加上 g++ 和 makefile。这是我的问题;我有以下生成文件:

这在尝试时会出错make,因为我需要链接到一个名为 的 Windows 库Ws2_32.lib,这是Winsock2.hinclude在我的一个.h文件中需要的。

那么我该怎么做呢?我已经尝试过这个-l选项,但我无法让它工作。它如何与有空格的路径一起工作?

0 投票
3 回答
8637 浏览

linux - linux g++编译器重定向stderr和stdout创建空文件

我正在将 g++ 编译器输出(stderr 和 stdout)重定向到 linux 上的文件。但它正在创建一个空文件。

我在其他一些帖子中读到 stdout 在每一行之后都没有刷新。没关系,但是 stderr 呢?在我的情况下,运行多个屏幕时出现编译错误。所以,我对标准错误输出感兴趣。没有创建标准输出输出。

上面的命令创建了一个名为“output”的空文件。以下命令报告无效的空命令。

0 投票
1 回答
1022 浏览

cygwin - 在 g++ 中使用 -mno-cygwin 标志是否有副作用?

我最近发现,只要我使用 -mno-cygwin 标志,我就可以使用 g++ 制作没有外部依赖项的 Windows 可执行文件。我的印象是编译器使用 MinGW 库而不是 cygwin。

  • 这是使用 cygwin 构建没有 gpl 许可问题的二进制文件的有效方法吗?

  • 除了更大的可执行文件之外,还有任何技术上的副作用吗?(即,失去 cygwin 特定的功能,受限的功能)

  • 此功能是否记录在任何地方?我只能找到几年前描述它的新闻组帖子。

0 投票
3 回答
5283 浏览

c++ - 在 Mac 上使用 FFMPEG 而不是 Quicktime 编译 OpenCV

我正在开发一些将在带有 OpenCV 和 FFMPEG 的 Linux 上运行的代码。我想使用我的 Mac 开发此代码,并且我需要 Mac 上的 FFMPEG 功能。

我已经能够像这样运行配置:

但是当我运行 make 我得到这个错误:

我尝试使用较新版本的 OpenCV 1.1pre1,但我得到了类似的错误,但符号不同。我使用与上面相同的 ./configure 。

如果我添加 --enable-shared=no 并且 OpenCV 将编译,但我的程序将无法运行......

关于如何使用默认的 --enable-shared 编译其中任何一个的任何建议?

0 投票
8 回答
888 浏览

g++ - 一个unix发行版上的静态链接可以工作,而另一个则不行吗?

如果我在 ubuntu 中静态链接一个可执行文件,该可执行文件是否有可能在其他发行版(如 mint os)中不起作用?或软呢帽?我知道处理器类型会受到影响,但除此之外还有什么我需要注意的吗?对不起,如果这是一个愚蠢的问题。谢谢你的帮助

0 投票
12 回答
75122 浏览

c++ - 使用来自 cygwin 的 g++ C++ 编译器

我正在尝试执行我的第一个“Hello World!” 在 C++ 中。我使用的是 Windows XP,并且我已经安装了 cygwin,其中安装了 g++ C++ 编译器。我写了一个小 hello-world 程序,并保存在 hello.cpp 中。从命令提示符我写:

g++你好.cpp

但我得到:

'g++' 不是内部或外部命令、可运行程序或批处理文件。

我已经在我的 D:\programs\cygwin 中安装了 cygwin。我在 D:\cpp 中用我的 hello-world 文件创建了另一个目录。我的安装或路径似乎不太好,但我不知道是什么。我已经运行了 cygwin 的 exe 文件,并且在安装目录中我得到了所有必要的文件,我认为:bin 文件夹、lib、Cygwin.bat 等。

我已经阅读过,如果出现此类错误消息,我应该检查 cygwin1.dll 文件是否已复制到 Windows 的主文件夹中。这是 C:\WINDOWS 目录吗?我看过那里,我那里没有这样的文件。我在cygwin的bin文件夹中有cygwin1.dll:D:\programs\cygwin\bin。另外,如何检查命令的搜索路径中是否考虑了 bin 文件夹(D:\programs\cygwin\bin)?

我认为 hello-world 程序不应该包含任何语法错误,我只是复制了它。另外,当我写

g++ -v

我收到相同的错误消息:该命令无法识别。如果有人给我提示我应该看什么,我将不胜感激。谢谢你。

下面是 hello-world 程序的代码:

我已经安装了 g++,现在当我输入 g++ -v 时,我得到:Reading specs from: \d\cygnus\cygwin-b20\H-i586-cygwin32\bin..\lib\gcc-lib\i586-cygwin32\ egcs-2.91.57\specs gcc 版本 egcs-2.91.57 19980901(egcs-1.1 版本)

在 bin 目录中,我有 g++.exe 和 gcc.exe。我不明白为什么我在上面得到“gcc”而不是“g++”。我不知道这有多重要,但是当我尝试在 DOS 命令提示符下编译程序时收到错误消息:

g++你好.cpp

我得到:

这是我尝试在 cygwin shell 中编译程序时得到的结果:

0 投票
9 回答
25829 浏览

c++ - 如何在执行 ./configure 时设置 ccshared=-fPIC?

我正在尝试在RHEL 5 上为QGIS构建 Python 2.6 。在制作 QGIS 期间,我收到以下错误:

我从这个错误中得出的结论是我需要使用一些标志构建 Python 2.6 -fPIC,. 好的,所以我在configure.in文件中找到了它,但它检查了几个条件,并根据这些条件分配-fPICCCSHARED标志。

我所做的是,在检查了所有条件后,我添加了以下行以故意使用CCSHAREDas -fPIC

但它没有工作..

配置时如何指定我要设置CCSHARED-fPIC

0 投票
6 回答
41507 浏览

c++ - g++ 在 Windows 命令提示符下不起作用。安装 Cygwin

我已经安装了 Eclipse 和 CDT(需要在 Eclipse CDT 中使用 C/C++),以及安装 Cygwin 以便我可以编译我的文件。

在环境变量中,我将路径设置为包括以下内容:“C:\cygwin\bin;”

g++、make 和 GDC 都是通过 Cygwin 安装的。我通过在 bin 文件夹中搜索它们来确保这一点——它们都在那里。

如果我在 Windows 命令提示符中输入“make”,则会出现:

如果我在 Windows 命令提示符中输入“g++”或“gdc”,则会出现(或类似):

所以,换句话说,make 正在工作,但其余的都没有……但它们在同一个 bin 文件夹中!让我完全糊涂了。

如果我尝试打开 Cygwin Bash Shell、g++、make 和 GDC 都可以在那里工作。

但是,我需要它在命令提示符下工作,以便 Eclipse 能够编译我在 IDE 中编写的程序。

如果您知道为什么会这样,请告诉我。

0 投票
3 回答
8238 浏览

c++ - g ++未定义对构造函数的引用

我正在针对预编译的库编译和链接 cpp 文件,并且收到“未定义的引用”错误。

首先,这是命令(有问题的库是 quicknet3,我正在编译的程序是 trapper):

g++ -w -g -I. -g -O3 -pipe -Wall -I/home/install/x86_64/include/quicknet3 -L/home/install/x86_64/lib -lquicknet3 -lintvec -lfltvec -o trapper trapper.cpp CMyException.cpp

这是未定义的参考错误:

/tmp/ccFuVczF.o: In function 'main': trapper.cpp:1731: undefined reference to 'QN_InFtrLabStream_PFile::QN_InFtrLabStream_PFile(int, char const*, _IO_FILE*, int)'

trapper.cpp(第 1731 行)中的调用是:

IN_PFILE = new QN_InFtrLabStream_PFile(0, "", fp, 1);

其中fpa 是预先FILE *分配为调用的结果。fopen

被调用的构造函数在相关的头文件(QN_Pfile.h)中定义,如下:

class QN_InFtrLabStream_PFile : public QN_InFtrLabStream
{
public:
QN_InFtrLabStream_PFile(int a_debug, const char* a_dbgname, FILE* a_file, int a_indexed);
(... other declarations ...) }

QN_Pfile.cc中确实给出了构造函数的定义:

QN_InFtrLabStream_PFile::QN_InFtrLabStream_PFile(int a_debug,const char* a_dbgname, FILE* a_file, int a_indexed) : log(a_debug, "QN_InFtrLabStream_PFile", a_dbgname),file(a_file),indexed(a_indexed),buffer(NULL),sentind(NULL) {
(... the usual constructor stuff :P ...) }

我自己编译了quicknet3库,没有报错,安装到/home/install/x86_64/lib/libquicknet3.a

所以,我不明白为什么来自 trapper.cpp 的调用无法找到对这个构造函数定义的引用。的 g++ 参数-L/home/install/x86_64/lib -lquicknet3应该可以解决问题,对吧?

有任何想法吗?

谢谢,罗伊