0

我正在尝试在 cygwin 上编译一个非常旧的 slapd(LDAP 服务器)版本。以前它在 Linux 机器上运行,但由于我无法控制的原因,它必须在 Windows 服务器上运行。有人建议我们可以使用 cygwin 来编译源代码。

不幸的是,在“配置”期间构建失败并显示错误消息:

检查如何运行 C 预处理器... cc -E
检查 gcc...(缓存)cc
检查 C 编译器 (cc ) 是否工作...否
配置:错误:安装或配置问题:C编译器无法创建
e 可执行文件。

config.log 的最后几行是:

配置:失败的程序是:
#line 2822 “配置”
#include "confdefs.h"

int main() {
返回 __EMX__;
; 返回0;}
配置:2845:检查如何运行 C 预处理器
配置:2866:cc -E conftest.c >/dev/null 2>conftest.out
配置:2950:检查 gcc
configure:3063: 检查 C 编译器 (cc ) 是否工作
配置:3079:cc -o conftest conftest.c 1>&5
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/bin/ld:找不到
 -luser32
collect2: ld 返回 1 个退出状态
配置:失败的程序是:

#line 3074 “配置”
#include "confdefs.h"

主要(){返回(0);}

更新:这是一台 win32 计算机 - cygwin 不包含一个名为 user32 的共享对象,但 Windows XP 确实包含一个名为 user32.dll 的对象 - 知道这是否是链接器正在寻找的对象吗?

UPDATE2: w32api 已经安装,(3.13-1) - 我注意到有一个 user32.lib 作为 visual-stuido 2003 .Net 的一部分 - 有没有办法让 Cygwin 中的 GCC 使用它?

4

3 回答 3

1

根本原因似乎是

/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/bin/ld:找不到-luser32

这要么是 cygwin 安装的问题,要么是配置脚本太旧,无法识别和处理安装。

于 2009-01-19T14:31:37.613 回答
1

如果 -luser32 失败,请尝试安装w32apiCygwin 软件包。

于 2009-01-19T16:44:16.300 回答
0

经过多次试验和错误,我找到了这个问题的正确答案:这个错误的原因是 Cygwin 环境没有正确设置。

域上的登录用户,因此默认情况下未正确设置 /etc/passwd 和 /etc/group 文件。解决方案是创建一个本地用户帐户,然后重新构建 passwd 和组文件。

在那之后,GCC 可以构建得很好。

听起来很疯狂,我知道。

于 2009-01-22T16:16:18.353 回答