我正在尝试在cygwin上编译一个非常古老的slapd版本(LDAP服务器)。以前这是在Linux机器上运行,但由于我无法控制的原因,它必须在Windows服务器上运行。有人建议我们可以使用cygwin来编译源代码。
不幸的是,在“configure”期间,构建失败并显示错误消息:
checking how to run the C preprocessor... cc -E checking for gcc... (cached) cc checking whether the C compiler (cc ) works... no configure: error: installation or configuration problem: C compiler cannot creat e executables.
config.log的最后几行是:
configure: failed program was: #line 2822 "configure" #include "confdefs.h" int main() { return __EMX__; ; return 0; } configure:2845: checking how to run the C preprocessor configure:2866: cc -E conftest.c >/dev/null 2>conftest.out configure:2950: checking for gcc configure:3063: checking whether the C compiler (cc ) works configure:3079: cc -o conftest conftest.c 1>&5 /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/bin/ld: cannot find -luser32 collect2: ld returned 1 exit status configure: failed program was: #line 3074 "configure" #include "confdefs.h" main(){return(0);}
更新:这是一个win32计算机 - cygwin没有包含一个名为user32的共享对象,但Windows XP确实包含一个名为user32.dll的对象 - 如果这可能是链接器正在寻找的任何想法?
UPDATE2:已经安装了w32api,(3.13-1) - 我注意到有一个user32.lib作为visual-stuido 2003 .Net的一部分 - 有没有办法让Cygwin中的GCC使用它?
答案 0 :(得分:1)
根本原因似乎是
/usr/lib/gcc/i686-pc-cygwin/3.4.4 /../../../../ i686-pc-cygwin / bin / ld:找不到-luser32
这可能是您的cygwin安装问题,或者配置脚本是旧的以识别和处理安装。
答案 1 :(得分:1)
如果-luser32失败,请尝试安装w32api
Cygwin软件包。
答案 2 :(得分:0)
经过多次试验&错误我找到了这个问题的正确答案:出现此错误的原因是Cygwin环境设置不正确。
域上的登录用户,所以/ etc / passwd&默认情况下,/ etc / group文件未正确设置。解决方案是创建一个本地用户帐户,然后重新构建passwd和groups文件。
在那之后,GCC可以建立得很好。
听起来很疯狂,我知道。