草庐IT

GNU_elfutils

全部标签

c++ - 警告 : Cannot parse . gnu_debugdata 部分; LZMA 支持在编译时被禁用

将核心转储文件加载到gdb时,我收到以下警告,看起来加载某些符号也因此失败。warning:Cannotparse.gnu_debugdatasection;LZMAsupportwasdisabledatcompiletime知道如何解决这个问题吗? 最佳答案 warning:Cannotparse.gnu_debugdatasection;LZMAsupportwasdisabledatcompiletimeGDB支持一个名为"minidebuginfo"的特性.此功能允许将完整调试信息的子集添加到结果文件的特殊部分。一些Lin

c++ - Ubuntu桌面开发环境(GNU工具)

我正在设置Linux开发机器(Ubuntu9.0.x)。我想知道Ubuntu上C++开发人员的最佳开发环境-提供我的背景(见下文)。5年以上C++5年VisualStudio没有太多使用GNU工具的经验(GCC、GDB、make等)使用Emacs6个月左右在大学(大约8年前!)-我什么都不记得了;)我来自Windows背景,所以使用GUI比CLI更自在,尽管我希望随着时间的推移学习CLI命令。就在Linux上进行开发而言,我想变得高效并“一马当先”。我对能让我的生活更轻松的工具特别感兴趣:1).项目管理2).通过GUI构建配置(而不是makefile编辑——至少现在是这样)。3).调试

c++ - 如何用GNU的autoconf和automake打包数据文件

我是一个相当新的C++程序员。我使用SDL库制作了一个非常简单的游戏。我的游戏自然会使用一些图像、声音和字体。我想分发包,用户可以在其中配置&&make。这个简单的游戏不值得分发,但我想了解autoconf和automake的工作原理。我在互联网上搜索了这些示例,但我能找到的教程只显示了一个简单的helloworld程序的安装。他们既不谈论数据文件的安装,也不谈论如何检查某些库是否存在以便我可以在编译时链接它们。而且,我的程序应该知道每个文件的安装位置,以便它可以加载它们。我深入研究了automake和autoconf手册,但它们更像是引用资料,而不是新手的资源。任何人都可以简要解释一

c++ - GNU C++ 和 Clang 中的模板实例化

看起来Clang(3.8)和GNUC++(4.9)中模板实例化的规则不一样。这是一个例子:#includetemplateclassAssert{Assert();//privateconstructorforAssert};templateclassAssert{//implicitpublicconstructorforAssert};templateclassA{};templateTfoo(A){returnT(N-1);}templateTfoo(A){//fooisnotdefinedforN=0Assert();returnT(0);}intmain(intargc,ch

c++ - GNU Make 产生完全不同的结果

这令人困惑。我有我的Makefile:OBJECTS=INCLUDE_BUILD_PATH=/Users/wen/Projects/include#ChangecompilationsettingshereCOMPILE=g++overrideCOMPILE_FLAGS+=-O2#Changelinker/compilerspecificsettingshereLD_FLAGS:=CC_FLAGS:=-c-I$(INCLUDE_BUILD_PATH)/bigint#AddsourceextensionshereSRC_EXT=cppcc#Addheaderdependenciesher

c++ - 静音 gcc 的 "only available with -std=c++XX or -std=gnu++XX"警告

后来的语言标准中的一些语言特性非常有用,编译器供应商选择将它们向后移植到早期版本。典型的例子是ifconstexpr。这个简单的程序:templateconstexprintget(){ifconstexpr(sizeof(T)>10){return1;}else{return0;}}static_assert(get()==0,"!");static_assert(get()==1,"!");根据语言规则,技术上需要C++17,并且在C++11中技术上格式不正确...但是gcc和clang都可以在-std=c++11上编译它无论如何。每个都会发出警告。Clang会告诉您该警告是什么,

c++ - _Expand 与 new 与 GNU

最近,我交了一个新friend。他的名字是_expand,我们进行了一些愉快的交谈,我什至和他一起出去玩过几次。但是当我开始四处打听时,没有人听说过我的_expand。我开始怀疑了。我给微软的几个完全不隐喻的friend打了电话,也给公司其他地方的几个friend打了电话。没有什么。没有人用过它。我四处寻找各种搜索引擎和源代码树。除了在这里和那里粗略地提及之外,什么也没有。当然,关于性能和兼容性的信息不足以让我将_expand引入生产代码或更恰本地引入通用库。更糟糕的是,我在任何gnu库中都找不到等效的功能,所以我和我的新friend一起破解的任何东西都不会是可移植的。这是一种耻辱,因

c++ - gnu c++ 中是否有 __if_exists 的等价物?

__if_exists是微软特定的关键字,用于在编译时测试标识符是否存在:msdn:__if_exists它在“伪造的”模板特化方面非常有用,因为在某些情况下,它提供了一种比“真正的”特化或重载等其他方法更简单、可读且性能更好的方法。但现在我必须将一个大项目移植到gnuc++,我想如果我不得不为我使用它的(诚然很少的)场合找到其他方法,我会开始有点哭泣 最佳答案 在我看来,这是一个蹩脚的关键字......不幸的是,据我所知,它不存在于gcc中,但我可能根本不知道它。处理此问题的正确C++方法是通过使用概念,即根据某些要求调整类型上执

C++ [[gnu::visibility ("default")]] 与 Windows 和 Linux 上的 __declspec(dllexport)

我需要用C++创建一些共享库,我使用linux作为我的开发者操作系统。我知道如果我想通过dlsym/LoadLibrary加载它们,我需要让符号可见。所以在Linux中,我所有的符号都遵循这种模式:extern"C"[[gnu::visibility("default")]]voidf();我在启用C++11的情况下使用了clang,并且能够在我的主机程序中加载f。当我转移到Windows时,我使用启用了C++11的GCC4.8.2,并且该模式在Windows机器上也适用于LoadLibrary。(我需要使用C++11来实现新的属性语法)。我知道在Windows上我需要使用__decl

c++ - 为什么使用 clang -std=gnu++11 时此 C++ 代码会编译?

使用clang-std=gnu++11-ctest.cpp编译:voidtest(){[[randomtexthere]]if(0){}}但这会产生错误main.cpp:3:1:error:expectedstatement:voidtest(){[[randomtexthere]]}如果我使用clang-std=gnu++11-S-emit-llvmmain.cpp编译并查看LLVM代码,它看起来像[[...]]行无效:definevoid@_Z5testv()nounwinduwtablessp{retvoid}有什么想法吗?错误或某些C++11语法或GNU扩展语法?我正在使用Xc