- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我编写了一个 Makefile,用另一个应用程序编译我的迷你操作系统。我必须使用 -nostdioc 和 -nostdlib 来编译它们,但问题是,该应用程序正在使用 stdio/stdlib 函数,当我运行 Makefile 时,出现错误无法找到我的应用程序使用的功能的消息。
我尝试删除 -nostdlib
-nostdioc
但没有成功。
Here is the Makefile如果有人想看的话。
最佳答案
-nostdlib
告诉 gcc 不包含 告诉编译器不包含标准库,其中之一是 glibc(GNU libc)。 -nostdinc
告诉编译器不要使用头文件的标准路径。 stdlib.h 和 stdio.h 中带有原型(prototype)的函数是 libc 的一部分,您已告诉 gcc 不要使用它们。因此,您需要自己实现它们或显式包含 libc(用于自定义操作系统的一些常见库是 newlib 和 uClibc)。哪种方法更容易取决于所使用的功能。我应该补充一点,如果您正在尝试编译操作系统和应用程序,甚至是静态应用程序,您可能需要考虑使用交叉编译器( http://wiki.osdev.org/GCC_Cross-Compiler ),并且接下来是否可以使其正常工作步骤是您自己的工具链,其中包括 libc ( http://wiki.osdev.org/OS_Specific_Toolchain )。
如果无法实现必要的功能,那么最好的选择是使用完整的工具链,包括您自己的 libc。您不能简单地使用 GNU libc 作为 libc 的一部分,libc 是系统调用的包装器,并且您必须拥有一个具有与主机操作系统相同的系统调用接口(interface)的内核。请注意,将 libc 移植到操作系统的过程的一部分是实现系统调用。对于 newlib,这包括但不限于写入、读取、打开、关闭、fork 和 exec。如果您的应用程序不使用这些系统调用,您可以简单地实现虚拟版本。
关于c - 在使用 nostdlib 和 nostdinc 标志进行编译时如何使用 stdio 和 stdlib?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30790392/
我正在尝试在我的 Mac 上“干净”地构建一个 C++ 程序。我所说的干净是指不包含任何我未明确指定的内容。 我的 gcc 安装位于: /Applications/gcc471/ 到目前为止,我可以使
我编写了一个 Makefile,用另一个应用程序编译我的迷你操作系统。我必须使用 -nostdioc 和 -nostdlib 来编译它们,但问题是,该应用程序正在使用 stdio/stdlib 函数,
我是一名优秀的程序员,十分优秀!