Questions tagged «gcc»

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




6
__gxx_personality_v0的作用是什么?
这是一个来自OS开发站点的二手问题,但是由于我在任何地方都找不到合适的解释,这使我感到好奇。 使用gcc编译和链接独立的C ++程序时,有时会发生如下链接错误: out/kernel.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0' 这显然是因为该符号是在libstdc ++中定义的,而在独立环境中则缺少该符号。解决问题仅需在以下位置定义此符号: void *__gxx_personality_v0; 哪个很好,但是我不喜欢魔术般工作的东西...所以问题是,这个符号的目的是什么?
103 c++  gcc  linker  kernel 

4
-D_XOPEN_SOURCE是什么意思?
我最近遇到了一些代码,如果没有此arg,gcc将无法编译这些代码。我检查了gcc手册页,但没有找到此特定选项。我确实找到了XOPEN_SOURCE,但是对其作用的解释很少。 有人可以详细说明吗?我知道-D_XOPEN_SOURCE可以设置为不同的值,例如400,600,但什么做那些做?
103 c  gcc 

2
&&在无效* p = && abc;中是什么意思
我遇到了一段代码void *p = &&abc;。&&这里的意义是什么?我知道右值引用,但我认为&&在这种情况下使用的是不同的。&&表示什么void *p = &&abc;?
102 c++  c  gcc  operators 

20
gcc错误:gcc:尝试执行cc1错误:execvp:没有这样的文件或目录
我已经在Linux Mint 12上成功使用gcc。现在出现错误。我最近一直在进行一些.so编译并安装了Clang,但是自从这两个事件以来,它们都已成功编译,因此不确定发生了什么变化。我使用GUI软件管理器删除并再次安装gcc,但是结果是相同的: ~/code/c/ut: which gcc /usr/bin/gcc ~/code/c/ut: gcc -std=c99 -Wall -Wextra -g -c object.c gcc: error trying to exec 'cc1': execvp: No such file or directory
102 gcc 

3
是否将shared_ptr <Base>向下转换为shared_ptr <Derived>?
更新:此示例中的shared_ptr类似于Boost中的shared_ptr,但它不支持shared_polymorphic_downcast(或者对于此问题,不支持dynamic_pointer_cast或static_pointer_cast)! 我正在尝试初始化指向派生类的共享指针,而不会丢失引用计数: struct Base { }; struct Derived : public Base { }; shared_ptr&lt;Base&gt; base(new Base()); shared_ptr&lt;Derived&gt; derived; // error: invalid conversion from 'Base* const' to 'Derived*' derived = base; 到目前为止,一切都很好。我没想到C ++会将Base *隐式转换为Derived *。但是,我确实想要代码表示的功能(即在向下转换基本指针的同时保持引用计数)。我的第一个想法是在Base中提供一个强制转换运算符,以便可以隐式转换为Derived(对于pedants:我会检查向下强制转换是否有效,不用担心): struct Base { operator Derived* (); } // ... Base::operator Derived* () { return down_cast&lt;Derived*&gt;(this); } …
102 c++  gcc  boost 

2
GCC -g vs -g3 GDB标志:有什么区别?
使用gcc或Clang编译C源代码时,我总是使用该-g标志来生成gdb的调试信息。 gcc -g -o helloworld helloworld.c 我注意到有些人推荐了-g3。-g和-g3标志之间有什么区别?-g和之间还有区别-ggdb吗?
102 c  debugging  gcc  gdb  clang 

4
在C代码中使用C ++库
我有一个C ++库,其中提供了用于管理数据的各种类。我有该库的源代码。 我想扩展C ++ API以支持C函数调用,以便该库可以与C代码和C ++代码同时使用。 我正在使用GNU工具链(gcc,glibc等),因此语言和体系结构支持不是问题。 从技术上讲不可能有什么原因吗? 我需要注意任何陷阱吗? 是否有与此相关的资源,示例代码和/或文档? 我发现的其他一些内容: 使用以下代码包装C代码需要使用的C ++标头。 #ifdef __cplusplus extern "C" { #endif // // Code goes here ... // #ifdef __cplusplus } // extern "C" #endif 将“真实的” C ++接口保留在C不包含的单独的头文件中。在这里考虑PIMPL原理。#ifndef __cplusplus #error在这里使用东西有助于发现任何疯狂。 小心C ++标识符作为C代码中的名称 C和C ++编译器之间的枚举大小不同。如果您使用的是GNU工具链,则可能不是问题,但仍然要小心。 对于结构,请遵循以下格式,以免C混淆。 typedef struct X { ... } X …
102 c++  c  gcc  glibc 

21
CUDA与我的gcc版本不兼容
我在编译CUDA SDK附带的一些示例时遇到了麻烦。我已经安装了开发人员驱动程序(版本270.41.19)和CUDA工具包,然后安装了SDK(均为4.0.17版本)。 最初,它根本没有编译: error -- unsupported GNU version! gcc 4.5 and up are not supported! 我在81:/usr/local/cuda/include/host_config.h中找到负责的行,并将其更改为: //#if __GNUC__ &gt; 4 || (__GNUC__ == 4 &amp;&amp; __GNUC_MINOR__ &gt; 4) #if __GNUC__ &gt; 4 || (__GNUC__ == 4 &amp;&amp; __GNUC_MINOR__ &gt; 6) 从那时起,我只编译了几个示例,其结尾为: In file included from /usr/include/c++/4.6/x86_64-linux-gnu/bits/gthr.h:162:0, from /usr/include/c++/4.6/ext/atomicity.h:34, from /usr/include/c++/4.6/bits/ios_base.h:41, …
102 gcc  cuda  debian 

3
gcc 4.8或更早的关于正则表达式的错误吗?
我正在尝试在C ++ 11的一段代码中使用std :: regex,但是似乎该支持有点问题。一个例子: #include &lt;regex&gt; #include &lt;iostream&gt; int main (int argc, const char * argv[]) { std::regex r("st|mt|tr"); std::cerr &lt;&lt; "st|mt|tr" &lt;&lt; " matches st? " &lt;&lt; std::regex_match("st", r) &lt;&lt; std::endl; std::cerr &lt;&lt; "st|mt|tr" &lt;&lt; " matches mt? " &lt;&lt; std::regex_match("mt", r) &lt;&lt; std::endl; std::cerr &lt;&lt; "st|mt|tr" &lt;&lt; …
101 c++  regex  gcc  c++11  libstdc++ 


3
如何使用g ++创建静态库?
有人可以告诉我如何从.cpp和.hpp文件创建静态库吗?我需要创建.o和.a吗?我也想知道如何在其中编译静态库并在其他.cpp代码中使用它。我有header.cpp,header.hpp .我想创造header.a。在中测试header.a test.cpp。我正在使用g ++进行编译。

2
编译器错误:未在此范围内声明memset
我正在尝试在Ubuntu 9.10(gcc 4.4.1)中编译我的C程序。 我收到此错误: Rect.cpp:344: error: ‘memset’ was not declared in this scope 但是问题是我已经包含在我的cpp文件中: #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; 同样的程序在Ubuntu 8.04(gcc 4.2.4)下也可以正常编译。 请告诉我我想念的是什么。
100 c++  gcc 

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.