我正在尝试使用以下代码编译共享库(.so):
libreceive.h文件:
#include <stddef.h>
int receive(int sockfd, void *buf, size_t len, int flags);
libreceive.c文件
#include <stddef.h>
#include <libreceive/libreceive.h>
int receive(int sockfd, void *buf, size_t len, int flags){
return recv(sockfd, buf, len, flags);
}
这里的问题是,我试图将.h包含在我正在构建的库中,并同时从.c中的同一个库中使用它。
我知道我想做的是可能的,但我做不到。
我怎么能那么做呢。
我尝试的代码是:
gcc -o libreceive.o -c -include libreceive.h libreceive.c
我得到以下错误:
fatal error: libreceive/libreceive.h: No such file or directory
compilation terminated.
这里的问题是,我试图将.h包含在我正在构建的库中,并同时从.c中的同一个库中使用它。
我知道我想做的是可能的,但我做不到。
我怎么能那么做呢。
最佳答案
由于libreceive.h
和libreceive.c
似乎在同一个目录中(从编译器调用判断),通常的方法是
#include "libreceive.h"
为了使用
#include <libreceive/libreceive.h>
libreceive.h
必须位于名为libreceive
的目录中,并且该目录必须是include路径的一部分。实现这一目标是可能的,但我认为这在这里既没有必要也没有用处。