在Unix上从Windows开发c++,原生函数调用

Developing C++ on Unix from Windows, native function-calling?

本文关键字:原生 函数调用 c++ 开发 Unix 上从 Windows      更新时间:2023-10-16

我想问几个关于在Unix(而不是windows)上编写c++的具体问题。

  1. 在windows中,要调用本机操作系统函数,通常链接到.dll或包含windows.h同样,如何在Unix中引用底层操作系统函数?

  2. 是否有Unix中所有底层操作系统功能的参考指南?(以便查看可用的功能)

  3. "包含"boost库的最佳方法是什么?使用像eclipse C/c++版本这样的IDE,并像在windows上那样包含boost ?

谢谢

1)没有单独的头文件。您不直接调用系统调用,相反,它们通常通过标准c库(如fopen)间接调用(在fopen的情况下,您也可以调用底层函数open,但这会使程序的可移植性降低)。提及您具体引用的系统调用将会有所帮助

2)听起来你是Unix平台开发的新手。我强烈推荐Richard Stevens的《UNIX环境中的高级编程》。

3)你应该熟悉make工具。一些通常被您的IDE隐藏在窗口中的东西。此外,boost库还附带了示例程序。

在Unix系统上,Unix函数通常与C标准库一起放在libc中。编译器会自动将它链接到你的可执行文件,通常作为一个"共享库",有点像Windows的DLL,但也不完全是。

至于标题要包含…大多数Unix系统都带有命令行man命令,该命令允许您调出关于各种调用的手册页。这些手册页通常会提到使用特定函数所需的头文件。

有一些作为系统调用实现的特殊函数。对于一般的C程序员来说,特定函数是系统调用这一事实是一个实现细节。但是通常值得注意的是这些函数是什么,因为它们可以帮助您了解操作系统为您做了什么,以及您正在使用的库正在做什么。这种区别在Windows上很难确定。

大多数Unix程序员仍然使用make和命令行实用程序。这意味着没有IDE设置或任何东西。你必须弄清楚要向编译器传递哪些标志。这通常不是那么困难。

而且,大多数Unix系统不会随意地在整个文件系统上安装软件。如果它是一个包含文件,是安装包的一部分,它将位于/usr/include目录中。这意味着您不必神奇地确定Boost包含文件的位置。它们将与其他所有内容一起放在/usr/include中。

虽然您可能必须弄清楚您需要哪些Boost库(如-lboost_filesystem),但所有Boost库都将在/usr/lib/usr/lib64中与所有其他库一起使用,因此您不必弄清楚它们在哪里。

  1. 没有一个头文件可以用来访问所有的*nix函数;请参阅第2节、第3节或第3节中相应的手册页,了解相关函数,以便了解您需要哪些头文件和库。

  2. 每个*nix倾向于不同程度地遵循POSIX或SUS。

  3. …怎么啦?