Questions tagged «g++»

g ++是GNU编译器集合(GCC)的C ++前端。GCC是GNU编译器集合。它是Linux上针对C,C ++,Go,Fortran和Ada的事实上的标准编译器,并且还支持许多其他语言和平台。除编译器外,GCC还具有一个工具链(libc,libstdc ++,objdump,nm等),该工具链已在多个平台和系统上广泛使用。



5
在C ++中的类声明中初始化const成员
在PHP和C#中,可以在声明常量时对其进行初始化: class Calendar3 { const int value1 = 12; const double value2 = 0.001; } 我有一个函子的以下C ++声明,该声明与另一个类一起用于比较两个数学向量: struct equal_vec { bool operator() (const Vector3D& a, const Vector3D& b) const { Vector3D dist = b - a; return ( dist.length2() <= tolerance ); } static const float tolerance = 0.001; }; …
80 c++  g++ 

4
与依赖项链接动态库
请考虑以下情形: 共享库libA.so,没有依赖项。 共享库libB.so,依赖项为libA.so。 我想编译一个与libB链接的二进制文件。我应该仅将二进制文件与libB链接,还是与libA链接? 有什么方法只能与直接依赖项链接,从而使依赖项中的未解析符号解析为运行时吗? 我担心库libB的实现将来可能会改变,引入了其他依赖项(例如libC,libD,libE)。我会遇到问题吗? 换一种说法: libA文件:a.cpp啊 libB文件:b.cpp bh 主程序文件:main.cpp 当然,b.cpp包含ah,main.cpp包含bh 编译命令: g++ -fPIC a.cpp -c g++ -shared -o libA.so a.o g++ -fPIC b.cpp -c -I. g++ -shared -o libB.so b.o -L. -lA 我应该使用哪个波纹管选项? g++ main.cpp -o main -I. -L. -lB 要么 g++ main.cpp -o main -I. -L. -lB …
79 gcc  dll  dependencies  g++ 

4
如何编写中间带有参数的PowerShell别名?
我正在尝试设置Windows PowerShell别名以使用某些参数运行MinGW的g ++可执行文件。但是,这些参数必须位于文件名和其他参数之后。我不想麻烦地尝试设置一个函数以及所有这些。有没有一种方法可以简单地说: alias mybuild="g++ {args} -lib1 -lib2 ..." 或类似的规定?我对PowerShell并不是很熟悉,而且我很难找到解决方案。任何人?
76 powershell  g++  alias 


10
如何检测类中是否存在特定的成员变量?
为了创建算法模板函数,我需要知道在作为模板参数的类中是x还是X(以及y或Y)。当将我的函数用于MFC CPoint类或GDI + PointF类或其他一些函数时,此方法可能很有用。他们都在其中使用不同的x。我的解决方案可以简化为以下代码: template<int> struct TT {typedef int type;}; template<class P> bool Check_x(P p, typename TT<sizeof(&P::x)>::type b = 0) { return true; } template<class P> bool Check_x(P p, typename TT<sizeof(&P::X)>::type b = 0) { return false; } struct P1 {int x; }; struct P2 {float X; }; // it …

8
超越-O3 / -Ofast的G ++优化
问题 我们有一个需要优化的中型程序来执行模拟任务。我们已经尽最大努力优化了源代码,以达到编程技能的极限,包括使用Gprof和Valgrind进行性能分析。 最终完成后,我们可能希望在多个系统上运行该程序几个月。因此,我们非常有兴趣将优化推向极限。 所有系统都将在相对较新的硬件(Intel i5或i7)上运行Debian / Linux。 问题 除了-O3 / -Ofast,使用最新版本的g ++可能有哪些优化选项? 我们也对代价高昂的次要优化感兴趣,从长远来看,这将有回报。 我们现在使用的 现在,我们使用以下g ++优化选项: -Ofast:最高“标准”优化级别。所包含的内容-ffast-math在我们的计算中不会造成任何问题,因此尽管不符合标准,我们还是决定使用它。 -march=native:启用所有特定于CPU的指令的使用。 -flto 以便跨不同的编译单元优化链接时间。

3
用g ++编译的奇怪代码
以下代码使用g ++ 4.8.1成功编译: int main() { int(*)(); } 它看起来像一个简单的函数指针声明: int(*f)(); 它不能与clang 3.4和vc ++ 2013一起编译。 是编译器错误还是标准的暗处之一? 使用g ++ 4.8.1可以正常编译的类似奇怪代码片段的列表(已更新): int(*)(); int(*); int(*){}; int(*()); 这些奇怪代码片段的现场示例。 更新1: @Ali在注释中添加了一些有趣的信息: 所有4种情况均使用clang 3.5干线(202594)给出了编译错误,并且使用gcc 4.9干线(20140302)进行了编译。的行为与相同-std=c++98 -pedantic,但int(*){};可以理解的除外。扩展的初始化程序列表仅适用于-std=c++11。 更新2:正如@CantChooseUsernames在他的回答中指出的那样,即使没有初始化,它们仍然可以正常编译,即使没有启用任何优化,g ++也不会为它们生成任何汇编(既没有初始化也没有初始化): int(*)() = 0; int(*) = 0; int(*){} = 0; int(*()) = 0; 带有初始化的实时示例。 更新3:令我惊讶的是int(*)() = "Hello, world!";,它也int(*p)() = "Hello, …
71 c++  gcc  c++11  g++ 

12
GCC C ++链接器错误:对“ vtable for XXX”的未定义引用,对“ ClassName :: ClassName()”的未定义引用
我正在使用Eclipse-CDT在Ubuntu x64上设置一个C ++项目。我基本上是在打个招呼,并连接到商业的3rd Party库。 我已经包含了链接到它们的库的头文件,但是仍然出现链接器错误。除了明显的问题之外,这里是否还有其他可能的问题(例如,我99%确信我正在链接到正确的库)。 有没有办法确定我链接到的静态库是64位的? 有没有一种方法可以确认该库具有我期望的类(和方法)? Eclipse说: 建立目标:LinkProblem 调用:GCC C ++链接器 g ++ -L / home / notroot / workspace / somelib-3 / somelib / target / bin -o“ LinkProblem” ./src/LinkProblem.o -lsomelib1 -lpthread -lsomelib2 -lsomelib3 ./src/LinkProblem.o:在“ main”函数中: /home/notroot/workspace/LinkProblem/Debug/../src/LinkProblem.cpp:17:对`SomeClass :: close()的未定义引用 ./src/LinkProblem.o:在函数“ SomeOtherClass”中: /home/notroot/workspace/somelib-3/somelib/include/sql/somefile.h:148:对`SomeClass :: SomeClass()的未定义引用 /home/notroot/workspace/somelib-3/somelib/include/sql/somefile.h:148:对`vtable for SomeOtherClass'的未定义引用 /home/notroot/workspace/somelib-3/somelib/include/sql/somefile.h:151:对`SomeClass …
70 c++  linker  g++  eclipse-cdt 

10
如何加快g ++的编译时间(使用大量模板时)
这个问题也许有点奇怪,但是我怎样才能加快g ++的编译时间呢?我的C ++代码大量使用boost和模板。我已经尽可能地将其移出了头文件,并使用了-j选项,但是编译(和链接)仍需要花费相当长的时间。 有没有工具可以分析我的代码并指出编译器的瓶颈?还是可以以某种方式分析运行在我的代码上的编译器?这真的很好,因为有时我会觉得我花了太多时间盯着编译器控制台日志...

2
如何在Mac Terminal中使用C ++ 11支持编译C ++
我想在Mac Terminal中编译C ++ 11源代码,但失败了。我试过g++ -std=c++11,g++ -std=c++0x,g++ -std=gnu++11和g++ -std=gnu++0x,但毫无效果。终端总是读unrecognized command line option。但是,g++ -std=gnu类似的东西工作正常(当然,C ++ 11源代码无法通过)。 我应该使用哪个选项来打开C ++ 11支持? 顺便说一句,我正在使用的命令行工具已安装在Xcode中,并且我很确定它们是最新的。
69 c++  macos  c++11  terminal  g++ 

1
转储包含g ++的路径
我正在尝试编写一些构建脚本,并想要确定包含项是否为系统包含项。所以我想让g ++告诉我它正在使用的包含路径。 cpp -v 似乎显然是最好的选择,但是它并没有给我C ++的路径。 所以我尝试了: g++ -Xpreprocessor -v 哪一种效果不太正确-g ++捕获了-v自己的详细输出。

5
链接器返回“重定位在符号索引处有无效的符号...”
我正在Ubuntu上尝试一些代码。我正在尝试运行以下代码 #include <cstdlib> #include <cmath> #include <ctime> #include "random.h" using namespace std; /* Function prototype! */ void initRandomSeed(); int randomInteger(int low,int high){ initRandomSeed(); double d= rand()/(double(RAND_MAX)+1); double s= d*(double(high)-low+1); return int(floor(low)+s); } double randomReal(int low,int high){ initRandomSeed(); double d=rand()/(double(RAND_MAX)+1); double s=d*(double(high)-low+1); return low+s; } bool randomChance(double p){ initRandomSeed(); return randomReal(0,1)<p; …
67 c++  ubuntu  g++ 

1
为什么不同块中相同命名的extern局部变量在c ++中的编译器之间得到不同的链接?
当我只是检查哪些链接被授予外部局部变量时, 我发现编译器之间存在一些不同的行为 例如,如果我测试了下面的代码, 如您在comment变量中看到的那样,var它们具有不同的链接 // foo.cpp int var = 10; // external linkage // main.cpp #include <iostream> static int var = 100; // internal linkage int main() { extern int var; // internal linkage std::cout << var << std::endl; { extern int var; // g++: external linkage , clang++: internal …
12 c++  g++  clang++  extern  linkage 
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.