草庐IT

linux - 无法找到完整路径 g++ 和 gcc

我正在尝试在Linux上安装EclipseHelios,并且设法安装了eclipse。但是,在运行一个简单的helloworld程序时,出现了错误。它说无法找到g++和gcc的完整路径,因此我无法运行该程序。这是否与我的linux安装或eclipse安装有关?请指教。谢谢你。 最佳答案 好的,可能是您在安装eclipse之前(或之后)没有安装g++,或者eclipse未检测到路径。由于Eclipse的安装本身不包含g++,因此您需要使用终端单独安装它。此外,由于您没有提到您使用的是哪个Linux,我假设您使用的是Ubuntu/Deb

c++ - 在 Debian 8.7 上安装 g++ 7.0.1

我一直在尝试在我的Debian机器上安装g++7。我能够很容易地在我的Mac上安装它(因为自制软件有它的公式)。但是我似乎找不到在Linux上安装它的方法。Thisindividualhadathread在安装g++4.9并更改他给的url时引导我tothispage,这似乎是正确的方向......但我想当我想更新这些包时,以这种方式安装它可能会导致一些潜在的问题。我缺少资源吗?或者是否有一个地方可以让我下载和编译运行它所需的一切?感谢您的帮助。有用的数据:我的内核是x86_64Linux3.16.0-4-amd64。编辑:在听从Dietrich的建议后,我现在遇到了一个新错误:Rea

c++ - 使用 g++-arm-linux-gnueabi 时包含 C++ 系统头文件的正确方法?

我正在尝试在安装了gcc-arm-linux-gnueabi和g++-arm-linux-gnueabi包的Ubuntu14.04上编译一个库。编译遇到的第一个源文件失败:/usr/bin/arm-linux-gnueabi-g++-DNDEBUG-g2-Os-pipe-fPIC-I.-DCRYPTOPP_DISABLE_ASM-mcpu=cortex-m3-mthumb--sysroot=/usr/arm-linux-gnueabi-c3way.cppInfileincludedfromcryptlib.h:83:0,fromseckey.h:8,from3way.h:7,from3

c++ - 在 g++ 中更改默认的 C++ 标准

为了以C++11标准编译程序,我们需要做:g++-std=c++11myProgram.cpp-omyProgramExec但是我是否可以将g++的默认标准设置为C++11,这样我就不必一次又一次地提及这个选项虽然我也可以在我的.bashrc中为此添加一个别名:aliasg++='g++-std=c++11';但我想知道是否有比这更好的方法。是否有任何可以编辑的g++配置文件以实现此目的?或者有更简单的方法吗? 最佳答案 经过一些研究(您自己可能已经做过),除了重建自定义版本或为其设置别名之外,我还没有找到更改g++的默认行为的方法

linux - 使用 gcc/g++ 时抑制系统调用

我在我的大学LAN中有一个门户,人们可以在其中上传代码以使用C/C++编程难题。我想让门户安全,这样人们就无法通过他们提交的代码进行系统调用。可能有几种解决方法,但我想知道我是否可以通过设置一些聪明的gcc标志来简单地做到这一点。默认情况下libc似乎包含,这似乎是声明系统调用的基本文件。有没有办法让gcc/g++在编译时“忽略”这个文件,这样就无法访问unistd.h中声明的任何函数? 最佳答案 chroot("/var/jail/empty");的一些特殊原因;setuid(65534);不够好(假设65534有合理的限制)?

c++ - gcc 是否有丢弃 -g 标志的选项?

我正在构建一个提供许多makefile的包,每个makefile都有硬编码,比如CFLAGS=-g-O2-Wall...CXXFLAGS=-g-O2-Wall...我想放弃-g选项,但我不想编辑所有makefile(即使不是自动使用sed或类似的东西)。软件包附带的configure脚本没有启用/禁用调试选项,但我可以将它传递给CFLAGS和CXXFLAGS变量并将其连接起来它们的值分别赋给CFLAGS和CXXFLAGS变量,其中包括-g选项。是否有一个选项可以在指定的情况下丢弃-g?有点像gcc-option-im-looking-for-gfile.c-ofile将构建没有调试符号

c++ - 如何在 gcc (g++) 中编译 C++ 代码以查看重载函数的名称修改?

我有重载函数,例如:voidf(int)voidf(int,int)voidf(int,float)如何编译它,以便我可以看到损坏的输出?像这样的东西:voidf(int)shouldshow:?f@@YAXH@Z(int)例如,要查看预处理器输出,我们使用-E,汇编器输出-s,名称错位输出是什么?P.S:平台是Linux编辑:根据这里的答案,我们可以:voidfunc(int);voidfunc(int,int);voidfunc(void);voidfunc(char);[root@localhost~]#cata.map|grepfunc0x0804881a_Z4funcc0x0

linux - 使用 g++ 的符号可见性

我在Linux/Mac下编译了一个隐藏符号的C++库。我对所有类都使用了__attribute__((visibility("hidden")))并使用选项(-c-O2-fPIC-MMD-MP-MF).在Mac下,使用MacDependencies,工作完成得很好,因为我只看到了我的导出(我实际上看到了之前和之后的差异)。但是,我注意到使用nm我仍然可以看到符号的所有名称。这在Mac和Linux下都会发生。这是为什么呢?有什么办法可以避免这种情况吗? 最佳答案 公开或隐藏,符号仍然存在。nm显示所有符号。不同之处在于隐藏符号对动态链

c++ - 用 gcc -pg -g 编译后没有写 gmon.out

使用gcc-pg-g编译了一个C++程序(至少,那些是我在Makefile中给出的参数;没有任何确凿的证据表明执行了什么命令)。程序运行正常完成,CWD设置为我的主目录。没有写入gmon.out文件。gcc是4.4.7。操作系统是centos6。我的程序是由使用fork/exec的手动Perl守护程序启动的。我已经验证了CWD是我的主目录,并且它是可写的,方法是让守护进程在执行我的目标程序之前执行touchfoo。就我能够研究的而言,这不应该影响程序的分析或在终止时(正常情况下)写入gmon.out。 最佳答案 遇到同样的问题,Ce

c++ - 将 g++ 4.8 链接到 libstdc++

我在桌面上下载并构建了gcc4.8.1,运行64位Ubuntu12.04。我从源代码构建它,就像文档推荐的那样,并使用命令../../gcc-4.8.1/configure--prefix=$HOME--program-suffix=-4.8makemake-kcheckmakeinstall它似乎通过了所有测试,我将所有东西安装到我的主目录中,后缀为-4.8以区别于系统gcc,即版本4.6.3。不幸的是,当我使用g++-4.8编译c++程序时,它链接到系统libc和libstdc++,而不是从gcc-4.8.1编译的较新的。我下载并构建了gcc4.8,因为我想尝试一下标准库中的新C+