我想问一些关于在Unix上编写C ++而不是windows的具体问题。
在Windows中,要调用本机OS函数,通常会链接到.dll或包含windows.h 同样,您如何在Unix中引用底层操作系统功能?
是否有针对Unix中所有底层操作系统功能的参考指南? (这样可以看出哪些功能可用)。
“包含”boost库的最佳方法是什么?使用类似eclipse C / C ++版本的IDE,并像在Windows上一样包含提升?
谢谢
答案 0 :(得分:2)
1)没有单个头文件。你不直接调用系统调用,而是通常通过像fopen这样的标准c库间接调用它们(在fopen的情况下,你也可以调用底层函数,但这会使程序的可移植性降低)。提及你指的是哪个系统调用会有所帮助
2)听起来你是Unix平台上的新手。我强烈推荐Richard Stevens的“UNIX环境中的高级编程”。
3)你应该熟悉make实用程序。通常由IDE隐藏在窗口上的东西。此外,boost库附带了示例程序。
答案 1 :(得分:1)
您可以包含单个标题来访问所有* nix函数;有关相关功能,请参阅第2,3或3p节中相应的手册页,以便了解所需的标题和库。
每个* nix往往会在不同程度上遵循POSIX或SUS。
......什么?
答案 2 :(得分:1)
在Unix系统上,Unix函数通常在libc中与C标准库一起使用。编译器会自动将其链接到您的可执行文件,通常称为“共享库”,它有点像Windows DLL,但也不完全相同。
至于要包含的标题......大多数Unix系统都带有命令行man
命令,该命令允许您提取有关各种调用的手册页。这些手册页通常会提到您使用特定功能所需的标题。
有一些特殊功能可以作为系统调用实现。对于普通的C程序员,特定函数是系统调用的事实是实现细节。但是,通常值得注意的是这些功能究竟是什么,因为它们可以帮助您了解操作系统为您所做的工作,以及您正在使用的库所做的工作。这种区别往往很难在Windows上确定。
大多数Unix程序员仍然使用make
和命令行实用程序。这意味着没有IDE设置或任何东西。您将不得不弄清楚要通过编译器的标志。这通常不是那么困难。
此外,大多数Unix系统都不会在整个文件系统中安装软件。如果它是包含安装包的一部分的包含文件,则它将位于/ usr / include目录中。这意味着您不必神奇地划分Boost包含文件的位置。他们将在/ usr / include中包含其他所有内容。
虽然您可能需要弄清楚您需要哪些Boost库(例如-lboost_filesystem
),但所有Boost库都将位于/usr/lib
或/usr/lib64
所有其他库中,所以你不必弄清楚它们在哪里。