# 3.8 构建和安装 submit client

domjudge 支持两种提交方式: 一种是通过命令行提交, 一种是通过 web 界面提交; 经验证明, 每种方式都有用户偏爱于它

命令行的 submit client 在内部使用 API 借口发送提交请求; 这需要在编译时使用 `libcURL` 和 `libjsonCPP` 开发库; 可以使用 `--enable-static-linking` 的 `configure` 选项静态链接 submit client 以避免运行时的依赖性

submit client 可以使用 `make submitclient` 进行编译; 没有 `make target` 用以安装 submit client, 因为它的位置很大程度上取决与环境; 例如, 你可以将其复制到所有队伍的计算机中或将它放在网络文件系统上; **注意**, 如果队伍计算机和裁判机的系统(版本)不同, 则需要为该操作系统(版本)构建 submit client

submit client 需要知道 domserver 的网址; 这可以通过命令行选项或环境变量传递; 后者更具易用性; 这个设置在脚本 `submit_wrapper.sh` 中; 浏览此脚本以获取详细的设置方法

submit client 连接 Domjudge API 既能通过设置的认证方案进行认证, 也能通过 Domjudge 内用户的用户名密码的组合进行认证(这样会忽略认证方案); 例如: 当启用 `IPADDRESS` 方案, 不需要额外的设置, 提交会来自各个队伍的 ip 地址; 当使用其他方案时, 你可能需要把用户名和密码一同放在队伍账户里以供 submit client 使用; 在这种情况下, 这些密码始终在 Domjudge 内部使用, 因此, 在使用这种方案时不要用类似 'LDAP' 这样的密码; 将凭证写到 `~/.netrc` 中, 例如:

```
machine domserver.example.com login user0123 password Fba^2bHzz
```

查阅 `netrc` 的手册以获取详细信息; 你可能希望提前分发这些 `.netrc` 文件到队伍账户; 确保这个文件只有该用户自己可读

## Windows/Cygwin 下构建 submit client

**注意**: 此功能不再被很好地支持; 我们建议你在 Windows 中使用 web 界面提交

submit client 也可以在 Windows 下以 `Cygwin` 环境编译; 首先安装 `Cygwin`, 然后安装 `GCC`, `curl-devel` 和一些可能要用到的软件包; 当 `Cygwin` 和其依赖的软件被正确安装后你就可以在 `submit` 目录运行 `configure` 和 `make submit.exe` 来创建 submit client 的二进制文件
