首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cygwin中奇怪的无声cc1plus误差

cygwin中奇怪的无声cc1plus误差
EN

Stack Overflow用户
提问于 2012-10-03 12:31:30
回答 1查看 1.3K关注 0票数 1

我有最新的g++ 4.5安装在windows下的cygwin。编译器运行良好,但在此期间(通过重新启动重新启动env?)出现故障。我有一个简短的测试程序(称为cxx.cpp)

代码语言:javascript
复制
#include<iostream>
int main(void){
    for(int i=0; i<3; i++) std::cerr<<i<<std::endl;
}

我就跑了

代码语言:javascript
复制
$ g++ cxx.cpp   # no output, jsut exits
$ echo $?
1

然后试着

代码语言:javascript
复制
$ strace -ff g++-4 cxx.cpp
... lots of output ...
   18  151816 [main] g++-4 2804 build_env: env count 4, bytes 275
   37  151853 [main] g++-4 2804 build_env: envp 0x61274708, envc 47
  428  152281 [main] g++-4 2804 child_info::child_info: subproc_ready 0x6CC
 1399  153680 [main] g++-4 2804 child_info_spawn::worker: pid 2804, prog_arg /usr/lib/gcc/i686-pc-cygwin/4.5.3/cc1plus.exe, cmd line C:\cygwin\lib\gcc\i686-pc-cygwin\4.5.3\cc1plus.exe -quiet -D__CYGWIN32__ -D__CYGWIN__ -Dunix -D__unix__ -D__unix -idirafter /usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../../include/w32api -idirafter /usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../../i686-pc-cygwin/lib/../../include/w32api cxx.cpp -quiet -dumpbase cxx.cpp -mtune=generic -march=i686 -auxbase cxx -o /tmp/ccr4l3sS.s)
   28  153708 [main] g++-4 2804! child_info_spawn::worker: new process name \\?\C:\cygwin\lib\gcc\i686-pc-cygwin\4.5.3\cc1plus.exe
   19  153727 [main] g++-4 2804! child_info_spawn::worker: spawned windows pid 2816
   17  153744 [main] g++-4 2804! child_info::sync: n 2, waiting for subproc_ready(0x6CC) and child process(0x670)
--- Process 2816, exception C0000139 at 7C96671E
--- Process 2816, exception C0000139 at 7C96671E
 6683  160427 [main] g++-4 2804! child_info::sync: pid 2816, WFMO returned 1, exit_code 0xC0000139, res 0
  461  160888 [main] g++-4 2804! child_info::proc_retry: exit_code 0xC0000139

我看cc1plus有麻烦了。我用child_info_spawn::worker揭示的东西来称呼我自己

代码语言:javascript
复制
$ /lib/gcc/i686-pc-cygwin/4.5.3/cc1plus.exe -quiet -D__CYGWIN32__ -D__CYGWIN__ -Dunix -D__unix__ -D__unix -idir./../../include/w32api -idirafter /usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../../i686-pc-cygwin/lib/../../includtune=generic -march=i686 -auxbase cxx -o /tmp/ccr4l3sS.s
$ echo $?
127

有什么建议来分析哪里出了问题吗?我该查些什么?我对cygwin还挺陌生的。

编辑:在strace下运行cc1plus

代码语言:javascript
复制
strace -ff /lib/gcc/i686-pc-cygwin/4.5.3/cc1plus.exe -quiet -D__CYGWIN32__ -D__CYGWIN__ -Dunix -D__unix__ -D__unix -idir./../../include/w32api -idirafter /usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../../i686-pc-cygwin/lib/../../includtune=generic -march=i686 -auxbase cxx -o /tmp/ccr4l3sS.s

导致弹出对话框,“过程入口点__gxx_personality_v0无法位于动态链接库cygstdc++-6.dll中”:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-03 14:18:14

cygstdc++-6.dll的问题让我认为,以前用--program-suffix=-4.7手工安装gcc-4.7就是问题所在。当然,根据http://gcc.gnu.org/faq.html#multiple的说法,gcc的两个版本即使在不同的--program-suffix下也不能并行安装,因为它只适用于程序,而不是libs,而且还必须使用不同的--prefix

根据http://cygwin.com/ml/cygwin/2010-03/msg00031.html的说法,重新安装几个基本包应该可以解决这个问题。

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

https://stackoverflow.com/questions/12708514

复制
相关文章

相似问题

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