Соединение Mac .dylib не может найти заголовок - PullRequest
0 голосов
/ 11 октября 2019

Я пытаюсь создать и использовать файл .dylib с помощью gcc. Я просматривал учебник здесь с моей настройкой, но он, похоже, не работает.

Моя структура каталогов следующая:

  • src
    • hellomake.c
    • hellofunc.c
  • inc
    • hellomake.h
  • lib
    • libhellomake.dylib

Я использую код здесь .

Я пыталсяскомпилировать в соответствии с руководством со следующим

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

Первая команда завершается успешно, и когда я запускаю file на lib/libhellomake.dylib, как и ожидалось, я получаю:

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.

Что я делаю не так?

1 Ответ

0 голосов
/ 11 октября 2019

Передача комментариев в ответ.

  • В первой командной строке -Iinc, чтобы компилятор мог найти заголовок.
  • У вас нет -Iinc во втором, и компилятор не может найти заголовок.
  • Исправление так же просто и очевидно, как «добавить -Iinc во вторую командную строку». . доступны из библиотеки. Некоторые библиотеки предоставляют (требуют) несколько заголовков - засвидетельствуйте основную системную библиотеку C и стандартные заголовки C и POSIX.

    Основное различие между стандартными или системными библиотеками и их заголовками и библиотекамии заголовки, которые вы предоставляете, состоят в том, что компилятор знает, где найти системные библиотеки и заголовки автоматически, тогда как вы должны указать ему, где найти ваши, обычно через -L и -I options. Если ваша библиотека установлена ​​в /usr/local/lib и заголовок в /usr/local/include, вам, вероятно, не придется указывать вашему компилятору искать там.

...