Mac .dylib 链接找不到 Header

Mac .dylib Linking Cannot Find Header

我正在尝试使用 gcc 创建和使用 .dylib 文件。我正在使用我的 set-up 阅读教程 here,但它似乎不起作用。

我的目录结构如下:

我正在使用 here 中的代码。

我试着按照教程编译如下

gcc -dynamiclib -o lib/libhellomake.dylib src/hellofunc.c -Iinc
gcc -Llib -lhellomake -o hellomakesl src/hellomake.c

第一个命令成功,当我在 lib/libhellomake.dylib 上 运行 file 时,正如预期的那样,我得到:

lib/libhellomake.dylib: Mach-O 64-bit dynamically linked shared library x86_64

但是,第二个命令失败并显示以下错误消息:

src/hellomake.c:1:10: fatal error: 'hellomake.h' file not found
#include <hellomake.h>
         ^~~~~~~~~~~~~
1 error generated.

我做错了什么?

正在将评论转为答案。

  • 您在第一个命令行中有 -Iinc,因此编译器可以找到 header。
  • 第二个没有-Iinc,编译器找不到header.
  • 修复就像“将 -Iinc 添加到第二个命令行”一样简单明了。

In general, do .dylib files require accompanying .h files?

所有库都需要一个 header 来向编译器声明库中可用的功能。一些库提供(需要)几个 headers — 见证主系统 C 库和标准 C 和 POSIX headers.

标准库或系统库及其 header 与您提供的库和 header 之间的主要区别是编译器知道在哪里可以找到系统库和 headers 是自动的,而你必须告诉它在哪里可以找到你的,通常是通过 -L-I 选项。如果您的库安装在 /usr/local/lib 中,而 header 安装在 /usr/local/include 中,您可能不必告诉编译器在那里搜索。