Articles of 铿锵

GCC c ++ 11使用大量的RAM,STL位集<UINT_MAX>

在今天编写我的程序的时候,我注意到GCC的内存消耗模式(编译步骤)中有一些很奇怪的东西(我敢肯定可以解释)。 称为“cc1plus”的进程使用大约10 GB的RAM,用于less于10000行代码的程序。 在评论和取消注释代码行后,我终于find了“罪魁祸首”: std::bitset<UINT_MAX> 如果你想testing自己,请尝试这个很短的程序: #include <iostream> #include <bitset> #include <climits> std::bitset<UINT_MAX> justAVar; int main() { std::cout << UINT_MAX << std::endl; return 0; } 使用-std = c ++ 11或-std = c ++ 0x编译它,请注意,即使这个小例子在编译时也会使用大量的RAM(在我的例子中gcc和gcc都是7 GB) )所以如果你不得不按下重置button,不要抱怨和诅咒神像你没有被警告过。 我的testing机器: 设置1:Debian 7.0 64,gcc 4.8.1 设置2:Ubuntu 12.04 64,gcc 4.7.3,gcc 4.8.1,铿锵3.0.6(最后一个使用-std = c ++ 0x ) 关于bitset构造函数的实现的一个提示(很明显,如果是C ++ 11和C ++ […]

区分头文件和编译器/语言standard / os / glibc

/usr/include有很多头文件,其他地方有一些头文件。 一些头文件来自C语言标准,如stdint.h 。 有些来自编译器,有些来自glibc。 我应该如何区分它们,因为可以肯定他们的前因可以帮助我推理/理解一些东西…

来自EPEL的Amazon Linux上的Clang找不到C ++头文件或库

我试图编译一个简单的hello worldtesting程序,只是为了让我们的CI基础设施构build箱能够正常工作,并拒绝在CentOS上使用clang进行编译(但是在同一平台上可以和GCC一起工作)。 为了完整起见,这里显然是一个小小的程序: #include <iostream> int main(){ std::cout << "wow" << std::endl; return 0; } 运行clang++ test.cpp产生: test.cpp:1:10:致命错误:找不到'iostream'文件 我安装了一个简单的sudo yum install clang ,可以看到,当GCC安装在Amazon Linux上时,它自带的libstdc ++头文件在/ usr / include / c ++ / gcc-version中,但是要指定include编译这样的东西。 Clang应该使用它自己的(可能是libc ++),并且默认情况下知道系统中的头和库在哪里(至less类似于iostream)。 编译和运行这个程序在GCC这里工作得很好。 看来EPE包的叮当声可能没有正确configuration,是这样吗? 任何帮助将不胜感激。

如何在clang中select一个特定的gcc-toolchain?

Clang自动select最高版本的gcc版本: $ clang++ -v main.cpp clang version 3.8.1-12 (tags/RELEASE_381/final) Target: x86_64-pc-linux-gnu Thread model: posix InstalledDir: /usr/bin Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.9 Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.9.4 Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.1 Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/6.2.0 Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/7.0.1 Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.9 Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.9.4 Found candidate GCC installation: […]

奇怪的分析结果与zlib

我正在玩zlib并有这样的(简化)代码: #include <cstring> // memset #include <string> #include <zlib.h> #include <cstdio> const int compressionLevel_ = 9; const size_t BUFFER_SIZE = 1024 * 8; char buffer_[BUFFER_SIZE]; std::string compress(const char *data, size_t const size){ z_stream zs; memset(&zs, 0, sizeof(zs)); if (deflateInit(&zs, compressionLevel_) != Z_OK) return {}; zs.next_in = reinterpret_cast<Bytef *>( const_cast<char *>( data ) ); zs.avail_in = […]

与Clang编译时,链接程序无法在64位Mint OS下find32位库

我刚刚在64位Mint操作系统(版本17)上安装了Clang 3.5。 我试图编译我的程序在32位,但我遇到了问题。 我有一个名为test.cpp文件在我的主目录下面的代码: #include <iostream> int main() { std::cout << "Hello" << std::endl; } 然后我运行以下命令: $ clang++ -m32 -Wl,–verbose test.cpp | grep libgcc 我得到以下输出: $ clang++ -m32 -Wl,–verbose test.cpp | grep libgcc /usr/bin/ld: skipping incompatible /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/libstdc++.so when searching for -lstdc++ /usr/bin/ld: skipping incompatible /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/libstdc++.a when searching for -lstdc++ /usr/bin/ld: cannot find -lstdc++ /usr/bin/ld: skipping […]

铿锵3.8+ -fopenmp在Linux上:ld无法find-lomp

我已经从Debian Jessie和Fedora 24的基本库安装了clang 3.8。当我尝试用clang ++编译一个简单的HelloWorld.cpptesting程序,并且通过-fopenmp标志,在两种情况下,我都得到相同的错误: / usr / bin / ld:找不到-lomp clang-3.8:错误:linker命令失败,退出代码1(使用-v查看调用) 我看到,如果我改为传递-fopenmp = libgomp,它的工作原理。 但是,Clang OpenMP网站说,OpenMP运行时随附Clang 3.8。 那为什么不能find默认的libomp库? 我没有看到我的系统上的任何地方这个库。

安装Clang / LLVM / Ubuntu

我需要使用LLVM和Clang编译我所注册的编译器类。这不是关于类内容的问题,只是如何获得所需的软件安装。 我正在运行gcc版本4.6.3,并已下载,构build,testing并更新了我所认为的LLVM套件版本3.4(最新的svn版本)。 我做了一个简单的“hello world”应用程序,在LLVM入门页面上引用,但在线上 lli helloworld.bc 我得到错误“lli:helloworld.bc:无效的MODULE_CODE_GLOBALVARlogging” 我是一个完整的初学者这个东西,所以我不知道如果我给你所有你需要修复我的错误,请给我评论,如果你需要知道别的东西。 也请尽量给我尽可能详细的说明…我已经被扔进Ubuntu和Clang的世界没有任何的指示,不能忍受读另一个“解决scheme”,说:“阅读手册页”。 非常感谢你的帮助。 我只是想把这个设置好,所以我至less可以尝试作业。 编辑::这里是我在terminal运行的精确指令,其中99%是直接从LLVM网站: cd myFolder svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm cd myFolder cd llvm/tools svn co http://llvm.org/svn/llvm-project/cfe/trunk clang cd myFolder cd llvm/projects svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt cd myFolder mkdir build cd build ../llvm/configure –enable-optimized CC=/usr/bin/clang CXX=/usr/bin/clang++ make make check-all make update 然后 clang hello.c -o hello clang […]

安装Clang作为用户(没有Root权限)?

我有权访问大学的shell帐户,但没有root权限。 该服务器运行Ubuntu 8.04 – 哈代。 我希望在下个学期的Unix编程课程中使用Clang作为我的C编译器。 海湾合作委员会安装,但不是铛,和大学的IT部门,如预期,拒绝安装铛系统。 是否有可能作为用户从我的主目录运行Clang? 大概我需要从源代码编译。 我需要它只编译C.我不需要C ++或Obj C这个课程。

为什么主机系统上的lua比在linux vm中慢?

将Macbook Air(Mac OS 10.9.4,i5-4250U(1.3GHz),8GB RAM)上的Lua Script的执行时间与运行Arch Linux的虚拟机(virtualbox)进行比较。 在Arch Linux虚拟机中编译Lua 5.2.3 首先,我使用clang自己编译lua,将其与Mac OS X clang二进制文件进行比较。 使用tcc,gcc和clang $ tcc *[^ca].c lgc.c lfunc.c lua.c -lm -o luatcc $ gcc -O3 *[^ca].c lgc.c lfunc.c lua.c -lm -o luagcc /tmp/ccxAEYH8.o: In function `os_tmpname': loslib.c:(.text+0x29c): warning: the use of `tmpnam' is dangerous, better use `mkstemp' $ clang -O3 *[^ca].c lgc.c lfunc.c […]