我正在尝试使用gcc在OSX上从头开始编写C标准库。当我尝试在我的测试程序中包含我的库中的头文件时,我得到的错误是它没有定义。我尝试使用-nostdlib标志,但我仍然无法包含我的文件。
我的测试程序:
#include <math.h>
#include <bool.h>
#include <ctype.h>
#include <string.h>
#include <io.h>
int main(){
int x = sin(0.5);
int y = pow(2,3);
int z = abs(12);
myiofunction(7);
exit(0);
}
在我的库中定义了math.h,bool.h,ctype.h,string.h和io.h。我做错了什么?
编辑: 我得到的错误信息是:
helloTest.c:10:10: fatal error: 'bool.h' file not found
答案 0 :(得分:3)
为了使用您自己的标准库,您必须使用-I
选项来包含您的库:
gcc -nostdlib -I/path/to/my/headers/ ...
因此,如果这些文件的标题位于./include
中,则编译为:
gcc -nostdlib -I./include/ ....
当然,您需要在某些时候提供这些功能的目标代码。然后,您可以使用ld
和-lgcc
将它们全部链接在一起,以解决任何内部GCC子例程。
GCC链接选项:https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html
答案 1 :(得分:3)
头文件未编译到静态库中。它们必须可供图书馆和计划使用。
因此,在编译程序时,请确保指定-I
选项以让编译器找到库的头文件。
答案 2 :(得分:0)
答案 3 :(得分:0)
如果你使用它,无论如何都不会工作。你必须输入&#34; bool.h&#34;
另一个是-l选项。 看看:https://gcc.gnu.org/onlinedocs/cpp/Search-Path.html
如果指定默认位置:-R [PATH]
答案 4 :(得分:0)
要包含的库是
#include <stdbool.h>