gpt4 book ai didi

c - 如何测试 POSIX 兼容性?

转载 作者:太空狗 更新时间:2023-10-29 15:24:48 24 4
gpt4 key购买 nike

我正在使用 Linux 编写带有 POSIX API 的 C 程序。我在 friend 的 Mac OSX PC 上编译运行它,出现了一个小错误,但我没有使用 Linux 特定的功能。

我将使用 Linux 添加到 API 的一些特定功能。我还将为 Mac Os X 和 FreeBSD 使用特定的 POSIX 扩展。
我将使用条件编译来选择代码。如果操作系统不是这些,我将使用通用 POSIX 代码。

我没有 Darwin/Mac OSX 和 FreeBSD,Linux 是我 PC 中唯一的操作系统。我无法下载和安装 FreeBSD,因为它超过 500 MB。
我想知道一种方法来测试该程序是否会在其他 POSIX 系统上按预期编译和运行。
不知道有没有POSIX模拟器和编译器可以做测试。
测试很简单,他们不使用 GUI 和驱动程序,他们只是命令行。

我需要做 3 个测试:FreeBSD、Mac OSX/Darwin 和 Generic POSIX,但我没有工具。

编辑

是否有没有 GUI,但有 GCC/G++ 和 ssh/scp 的最小版本的 FreeBSD 和 Darwin? Darwin 是免费的,不是吗?
我的电脑很旧,但我想我可以将它们安装在虚拟机中,创建一个虚拟网络并使用 ssh/scp 传输和测试程序。

最佳答案

一种简单的方法是使用适当的功能测试宏来编译您的程序。例如,如果您将 _POSIX_C_SOURCE 定义为 POSIX 的目标版本(当前为 200809L),您将请求系统 header 向您的程序公开任何内容,除了 POSIX 基础需要/允许的内容.这可以通过带有 -D_POSIX_C_SOURCE=200809L 的命令行 CFLAGS 来完成。如果您想要 XSI 选项(完整的单一 Unix 标准功能,它是 POSIX 基础的超集),请改用 -D_XOPEN_SOURCE=700

这不会帮助您检测来自某些缺乏 POSIX 功能的系统的问题(例如,OSX 已损坏并且缺少有效的 sem_init 最后我检查过,即使它在 POSIX 中是强制性的),或编写依赖于 POSIX 标准接口(interface)中非标准行为的代码(例如,在传递给 regcomp 的表达式中使用 GNU 正则表达式扩展),但它会帮助您捕获任何意外使用接口(interface)不在标准中。

关于c - 如何测试 POSIX 兼容性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10368305/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com