linux - 未找到 C 编译器,但已安装 GCC

标签 linux gcc slackware

我在专用服务器上全新安装了 Slackware64 14.0,但我很难编译 nginx。

./configure (my options)

返回

checking for OS
 + Linux 3.10.23-xxxx-std-ipv6-64 x86_64
checking for C compiler ... not found

./configure: error: C compiler cc is not found

但 gcc 已安装,因为这是 gcc -v 返回的内容:

Reading specs from /usr/lib64/gcc/x86_64-slackware-linux/4.7.1/specs
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-slackware-linux/4.7.1/lto-wrapper
Target: x86_64-slackware-linux
Configured with: ../gcc-4.7.1/configure --prefix=/usr --libdir=/usr/lib64 --mandir=/usr/man --infodir=/usr/info --enable-shared --enable-bootstrap --enable-languages=ada,c,c++,fortran,go,java,lto,objc --enable-threads=posix --enable-checking=release --enable-objc-gc --with-system-zlib --with-python-dir=/lib64/python2.7/site-packages --disable-libunwind-exceptions --enable-__cxa_atexit --enable-libssp --enable-lto --with-gnu-ld --verbose --enable-java-home --with-java-home=/usr/lib64/jvm/jre --with-jvm-root-dir=/usr/lib64/jvm --with-jvm-jar-dir=/usr/lib64/jvm/jvm-exports --with-arch-directory=amd64 --with-antlr-jar=/home/slackware/slackbuilds/gcc/antlr-runtime-3.4.jar --enable-multilib --target=x86_64-slackware-linux --build=x86_64-slackware-linux --host=x86_64-slackware-linux
Thread model: posix
gcc version 4.7.1 (GCC) 

我尝试了什么(谷歌搜索后)

/tmp 使用noexec 挂载。
确实如此,作为我强化配置的一部分。我更改了它并重新启动以确保,现在我的 /etc/fstab 看起来像这样:

# <file system> <mount point>   <type>  <options>   <dump>  <pass>
/dev/md1    /   ext4    errors=remount-ro,discard   0   1
/dev/md2    /home   ext4    defaults,discard    1   2
/dev/md5    /var/www    ext4    defaults,discard    1   2
/dev/md6    /var/log    ext4    defaults,discard    1   2
/dev/md7    /tmp    ext4    defaults,discard,nodev,nosuid   1   2
/dev/md8    /var/lib/mysql  ext4    defaults,discard    1   2
/dev/sda3   swap    swap    defaults    0   0
/dev/sdb3   swap    swap    defaults    0   0
proc            /proc   proc    defaults        0       0
sysfs           /sys    sysfs   defaults        0       0
/tmp            /var/tmp none   rw,nosuid,nodev,bind    0   0

没有 noexec 的新 fstab 不工作。 (我什至尝试过显式exec)

gcc 不在您的 $PATH 上”
是的。

whereis gcc
gcc: /usr/bin/gcc /usr/lib64/gcc /usr/X11R6/bin/gcc /usr/bin/X11/gcc /usr/X11/bin/gcc /usr/libexec/gcc /usr/man/man1/gcc.1.gz /usr/share/man/man1/gcc.1.gz /usr/X11/man/man1/gcc.1.gz

echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/usr/sbin:/bin:/usr/bin

我做的其他事情:

查看 nginx 配置文件,他们使用了 CC 变量。该 CC 不存在。

CC=/usr/bin/gcc

这也行不通。

我尝试从源代码编译另一个程序以确保这不是 nginx 问题,我可能发现了一些有趣的东西:

通过尝试编译 htop,我得到了这个:

./configure 

checking for gcc... gcc
checking whether the C compiler works... no
configure: error: in `/home/napster/htop-master':
configure: error: C compiler cannot create executables
See `config.log' for more details

这是预料之中的,因为即使我有一个没有大多数开发者工具的最小安装,gcc 还是被发现了。这个错误应该通过安装所需的工具来解决。

我什至检查了 /usr/bin 上的符号链接(symbolic link)以确保 gcc 和 cc 正常:

ls -l /usr/bin

cc -> gcc
gcc -> gcc-4.7.1

有什么想法吗?
提前致谢。

最佳答案

“config.log”文件的内容是什么?

很可能您在某处获取了一些错误的 CFLAGS 或 LDFLAGS —— 可能在配置脚本中或来自 nginx/htop 默认值。

CFLAGS 和 LDFLAGS 是传递给编译器命令行的选项。如果它们无效,则编译器将不会运行。

如果您缺少 nginx/htop 需要的基本库以及指定导致 gcc 退出的 LDFLAG,则可能会出现相同的症状。

您确实需要检查 config.log 文件。

关于linux - 未找到 C 编译器,但已安装 GCC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23176688/

相关文章:

python脚本在后台运行时看到回溯

linux - 我可以在 Eclipse 运行配置中运行脚本吗?

gcc - GCC 下缺少返回语句的错误

c - 如何在 Ubuntu 上解决错误消息 "gcc‬: command not found"(仅带参数)

linux - slackbuild chromium 包需要多长时间?

c - 即使终止程序,也将程序回显到文件中(linux)

android - 低级安卓调试

c++ - GCC 交叉编译器 Cygwin64 : GFDL license tm. texi

Slackware/etc/slackpkg/mirrors

python - pyconfig-64.h : No such file or directory