在设置我的虚拟服务器实例期间,我需要使用make. 安装后是否存在任何安全风险make?或者我应该在部署实例之前清理它?
我还在gcc服务器上安装了编译器,用于在部署前构建应用程序。
我正在运行 Ubuntu LTS 并且在尝试执行我的一些 pip 安装内容时遇到错误,例如scrapy。这是我得到的错误:
Unable to execute gcc: No such file or directory
Error: command 'gcc' failed with exit status 1
Run Code Online (Sandbox Code Playgroud)
我正在 virtualenv 中安装 pip。我尝试使用以下命令安装 build Essentials,但仍然出现相同的错误:
apt-get -y install build-essential
Run Code Online (Sandbox Code Playgroud)
谁能帮我理解我哪里出错了?
编辑 - 更多信息:
ubuntu@ip-10-164-8-155:/var/log$ gcc -v
The program 'gcc' can be found in the following packages:
* gcc
* pentium-builder
Try: sudo apt-get install <selected package>
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 siege 和以下命令在我自己的服务器中进行压力测试:
$ siege -c 500 myweb.com/somefile.php
Run Code Online (Sandbox Code Playgroud)
但我收到此错误:
[error] descriptor table full sock.c:119: Too many open files
Run Code Online (Sandbox Code Playgroud)
我也收到了这个警告:
libgcc_s.so.1 must be installed for pthread_cancel to work
Run Code Online (Sandbox Code Playgroud)
但是我使用的是 Ubuntu 15.04(开发分支)并且我已经安装了 libgcc1 包,所以我不知道它为什么要抱怨那个 .so 共享库。
如何解决打开的文件过多和 libgcc 警告?
当我运行名为“myfile”的用户应用程序之一时。
$ ./myfile
Run Code Online (Sandbox Code Playgroud)
我收到以下输出
bash: ./myfile: cannot execute binary file
Run Code Online (Sandbox Code Playgroud)
我的用户希望运行二进制文件。我认为这是一个编译错误,但无法确认。我运行了文件命令
$ file myfile
myfile: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped
Run Code Online (Sandbox Code Playgroud)
我的 RHEL6 操作系统是 64 位
$ uname -p -o
x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
所以在我看来,它符合正确的架构。我不明白“可重定位”在文件命令的输出中是什么意思,并且无法从手册页中获得解释。
为了更好的衡量,我检查了共享库依赖项
$ ldd myfile
not a dynamic executable
Run Code Online (Sandbox Code Playgroud)
有什么方法可以让我运行这个文件,或者给我的用户一些关于它为什么不运行的建设性信息(比如他需要使用 x 重新编译)?
$ strace ./myfile
execve("./myfile", ["./myfile"], [/* 22 vars */]) = -1 ENOEXEC (Exec format error)
dup(2) = 3
fcntl(3, F_GETFL) = 0x8002 (flags O_RDWR|O_LARGEFILE)
fstat(3, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0 …Run Code Online (Sandbox Code Playgroud) 我想知道是否要从远程生产服务器中删除编译器工具 ( gcc, make, ...),主要是出于安全目的。
背景:
服务器在 Linux 上运行 Web 应用程序。考虑 Apache 入狱。否则,只有 OpenSSHd 面向公网。当然,jail 中没有编译器的东西,所以这是关于任何jail 之外的实际操作系统。
到目前为止,这是我个人的 PRO/CON 列表(关于删除):
亲:
缺点:
好的,下面是我要问你的问题:
(a) 我的 PRO/CON 评估是否正确?
(b) 您是否知道删除所有编译器工具的其他优点/缺点?他们更重吗?
(c) 如果给定的 PRO 语句成立,我应该认为哪些二进制文件是危险的?只有gcc,还是还有make,还是什么?我应该删除它们附带的整个软件包吗?
(d) 在不需要时将这些二进制文件移动到仅根目录可访问的目录是否可以?或者,如果我每次都“scp 进入”,是否会增加安全性?
谢谢!
我正在尝试让现代 GCC 在 Centos 6.4 上编译。问题是 Centos 没有现代 glibc 和 GCC 4.8.x 和 4.7.x 不断给我以下编译错误:
... -DL_gcov -c ../../.././libgcc/libgcov.c
In file included from /usr/include/features.h:385:0,
from /usr/include/stdio.h:28,
from ../../.././libgcc/../gcc/tsystem.h:88,
from ../../.././libgcc/libgcov.c:29:
/usr/include/gnu/stubs.h:7:27: fatal error: gnu/stubs-32.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)
这里的问题是gnu/stubs-32.h现代的一部分,glibc而 Centos 6.4 似乎没有它。我已经尝试构建自己的,glibc但是一旦它被安装并且在我的本地LD_LIBRARY_PATH我就不能运行任何其他程序,因为系统上所有现有的可执行文件都试图链接它并且它们失败了。
我想使用新的编译器,因为它可以更好地处理 C++ STL 代码,并且因为 GCC 4.8 中的优化器使我的代码运行时间是 Centos 附带的 GCC 4.4.7 编译器的 1/2。
关于如何做到这一点的任何建议?
我正在尝试gcc-3.4在最新的 Ubuntu 上使用。该软件包来自 debian 快照。
它可能假定不同的默认目录结构,因此例如我被迫给 it -I /usr/include/i386-linux-gnu/,这是gcc-4隐式假定的。
目前,它可以很好地编译我提供的所有内容,但无法链接。即使是最简单的可执行文件也会导致错误:
$ gcc-3.4 ~/tmp.cc -o ~/tmp
/usr/bin/ld: cannot find -lgcc_s
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud) 我有一个运行 Virtuozzo VPSes 的生产 CentOS 4.4 机器,我正在尝试在其中一个中安装 GCC,以便我可以从源代码安装最新的 PHP。我从 CentOS 镜像下载了 gcc 及其依赖项,并且能够安装其中的一些,但是遇到了 glibc-common 的问题:
[root@hq gcc]# rpm -i glibc-common-2.3.4-2.43.i386.rpm
警告:glibc-common-2.3.4-2.43.i386.rpm:V3 DSA 签名:NOKEY,密钥 ID 443e1821
来自安装 glibc-common-2.3.4-2.43 的文件 /usr/bin/gencat 与来自包 glibc-common-2.3.4-2.25 的文件冲突
来自安装 glibc-common-2.3.4-2.43 的文件 /usr/bin/getconf 与来自包 glibc-common-2.3.4-2.25 的文件冲突
来自安装 glibc-common-2.3.4-2.43 的文件 /usr/bin/getent 与来自包 glibc-common-2.3.4-2.25 的文件冲突
来自安装 glibc-common-2.3.4-2.43 的文件 /usr/bin/iconv 与来自包 glibc-common-2.3.4-2.25 的文件冲突
来自安装 glibc-common-2.3.4-2.43 的文件 /usr/bin/lddlibc4 与来自包 glibc-common-2.3.4-2.25 的文件冲突
来自安装 glibc-common-2.3.4-2.43 的文件 /usr/bin/locale 与来自包 glibc-common-2.3.4-2.25 的文件冲突
来自安装 glibc-common-2.3.4-2.43 的文件 /usr/bin/localedef 与来自包 glibc-common-2.3.4-2.25 的文件冲突
来自安装 glibc-common-2.3.4-2.43 的文件 /usr/bin/rpcgen 与来自包 glibc-common-2.3.4-2.25 … 嗨,我对 bash shell 脚本不是很熟练,我正在使用由 bash 脚本执行的 gcc 进行一些编译,我怎么知道(检查)编译是否成功?任何例子?
如何在 centos 7.1 上安装 gcc 5.2?用 g++,cpp ?
我编译过一次,但它需要更新的 glibc 不能在系统中切换
这样做的最佳方法是什么?是否有任何可用的预编译 RPM?
想要升级的原因:我们发现 gcc 4.1.2 似乎有一些我们需要编译的代码(特别是模板的东西)的问题,这在 Ubuntu 和他们较新的 gcc 中没有出现。我们也不能简单地迁移到 Ubuntu,因为一些使用的软件依赖于 CentOS 或 RedHat。
任何人的想法?我应该简单地将它从源代码编译到 /opt 目录中吗?
gcc ×12
centos ×4
g++ ×3
linux ×3
ubuntu ×3
security ×2
bash ×1
binary ×1
centos6.4 ×1
centos7 ×1
connection ×1
dependencies ×1
executable ×1
make ×1
patch ×1
scripting ×1
socket ×1
virtualenv ×1