Squ*_*all 4 c linux testing compatibility posix
我正在用POSIX API编写一个C程序并使用Linux.我在朋友的Mac OSX PC上编译并运行它并且出现了一个小错误,但我没有使用Linux特有的功能.
我将使用Linux添加到API的一些特定功能.我还将为Mac Os X和FreeBSD使用特定的POSIX扩展.
我将使用条件编译来选择代码.如果OS不是那些,我将使用通用POSIX代码.
我不拥有Darwin/Mac OSX和FreeBSD,Linux是我在PC上唯一拥有的操作系统.我无法下载和安装FreeBSD,因为它超过500 MB.
我想知道一种方法来测试程序是否会在其他POSIX系统上按预期编译和运行.
我想知道是否有POSIX模拟器和编译器来进行测试.
测试很简单,它们不使用GUI和驱动程序,它们只是命令行.
我需要做3个测试:FreeBSD,Mac OSX/Darwin和Generic POSIX,但我没有这些工具.
编辑
有没有GUI的FreeBSD和Darwin的最小版本,但有GCC/G ++和ssh/scp?达尔文是免费的,不是吗?
我的电脑很旧,但我想我可以将它们安装在虚拟机中,创建虚拟网络并使用ssh/scp来传输和测试程序.
一种简单的方法是使用适当的功能测试宏编译程序.例如,如果您定义_POSIX_C_SOURCE到POSIX(当前200809L)的目标版本,您将请求系统标题向您的程序公开除了POSIX base所需/允许的内容.这可以通过命令行CFLAGS来完成-D_POSIX_C_SOURCE=200809L.如果你想要XSI选项(完整的单Unix标准功能,它是POSIX基础的超集),那么请使用-D_XOPEN_SOURCE=700.
这无法帮助您检测来自缺少POSIX功能的某些系统的问题(例如,OSX已损坏且缺少sem_init最后检查的工作,即使它在POSIX中是必需的),也不会编写依赖于非标准行为的代码在POSIX标准接口中(例如,在传递给的表达式中使用GNU正则表达式扩展regcomp)但它将帮助您捕获任何意外使用不在标准中的接口.
| 归档时间: |
|
| 查看次数: |
1867 次 |
| 最近记录: |