首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C编译器不能在OpenSUSE上创建可执行文件

问C编译器不能在OpenSUSE上创建可执行文件
EN

Stack Overflow用户
提问于 2015-07-20 07:37:56
回答 3查看 1.7K关注 0票数 0

我尝试过从源代码编译xdebug,但是我变成了这样的输出:

/配置:加载站点脚本/usr/share/ site /x86_64-未知-linux-gnu检查处理长行和-e的grep。/usr/bin/grep检查白鹭。/usr/bin/grep -E检查不截断输出的sed ./usr/bin/sed检查cc.cc检查C编译器是否工作..。无配置: error: in /home/fobo66/xdebug-2.3.3': configure: error: C compiler cannot create executables Seeconfig.log‘以获取更多详细信息

这是我的config.log。

我发现了可能的错误:

/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: i386 architecture of input file '/usr/lib/crt1.o' is incompatible with i386:x86-64 output /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: i386 architecture of input file '/usr/lib/crti.o' is incompatible with i386:x86-64 output /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: i386 architecture of input file '/usr/lib/crtn.o' is incompatible with i386:x86-64 output /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: dynamic STT_GNU_IFUNC symbol 'strcmp' with pointer equality in '/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/libc.a(strcmp.o)' can not be used when making an executable; recompile with -fPIE and relink with -pie

那么,当我的编译器不能工作时,如何解决这个问题呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-21 09:03:40

解决了!

我刚刚用正确的架构重新安装了glibc-devel。

如何做到:

  1. 转到YaST
  2. 选择“软件管理”工具
  3. 在搜索字段中键入glibc
  4. 标记软件包glibc和glibc-devel以进行更新(单击复选框)
  5. 选择glibc包
  6. 点击底部的“版本”选项卡
  7. 选择具有正确架构的版本,例如2.19-16.15.1-x86_64
  8. 选择glibc-devel包并为它做6和7
  9. 点击“接受”
  10. 等待安装结束
  11. 关上窗户

在此之后,编译应该能够正常工作。

这是类似Windows的方法,这就是为什么它很糟糕的原因:)

当有人知道如何从终端做这件事时,请在这里写上答案。

票数 0
EN

Stack Overflow用户

发布于 2015-07-20 08:03:59

尝试用gcc编译一些简单的代码。

代码语言:javascript
复制
#include <stdio.h>
int main () { printf("hello world\n"); return 0; }

有命令

代码语言:javascript
复制
gcc -o simple simple.c

如果会出现像“命令找不到”这样的错误,那么gcc就不在环境的路径上。

还要确保gcc能够找到标准的头文件(比如stdio.h和e.t.c)

票数 1
EN

Stack Overflow用户

发布于 2015-07-20 08:50:33

/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: i386 architecture of input file '/usr/lib/crt1.o' is incompatible with i386:x86-64 output看起来链接器正在获取所需的obj文件的32位版本,其中它需要64位文件。尝试将LD_LIBRARY_PATH环境变量设置为/usr/lib64 64中的适当路径,然后重新编译。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31511070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档