Где разместить библиотеку C для использования в Windows, Mac и Linux - PullRequest
1 голос
/ 05 июля 2019

Я посмотрел несколько мест, чтобы выяснить, где разместить файл на Mac, и кажется, что размещение их в /usr/lib/libmylib.dylib и /usr/include/mylib.h - правильное место, а не в каталоге HOME или в/usr/local/lib.(Это для чего-то, что пользователь устанавливает на свой компьютер).

Пожалуйста, дайте мне знать, если это правильно.

Тогда остальная часть моего вопроса - где эквивалент (то есть )лучшее ) место для размещения C lib на windows и linux.Поиск здесь для окон говорит либо %windir%\system32, либо %SystemRoot%\winsxs.Но потом они, казалось бы, говорят, что это все-таки плохое место по нескольким причинам.Так что я не уверен там.

Тогда остальное, как это сделать для Linux .Кажется, то же самое, что и на Mac.

Конечная цель состоит в том, чтобы кто-то мог просто сделать #include <mylib.h> в своем коде C и заставить его работать.

Ответы [ 2 ]

1 голос
/ 05 июля 2019

@ Linux:

  • / usr / lib пути для динамических библиотек (.so)
  • / usr / include пути для заголовков библиотек (.h)

/ usr / local / include это префикс пути для пользовательских программ, не управляемых дистрибутивом.Вы захотите указать этот путь к компилятору C, чтобы найти библиотеки.Ваша команда выглядит так:

gcc -o <src_program_app> -I/usr/local/include/<ur_library_dir> <src_program>.c

Где src_program.c имеет импорт библиотеки, найденный в ur_library_dir.

Однако позже вы можете попробовать попробовать систему сборки, такую ​​как Cmake, которая автоматизирует эту компиляцию.

1 голос
/ 05 июля 2019

Это зависит от того, какие версии macOS вы используете.

Для Mac вы не сможете размещать библиотеки в /usr/lib или заголовки в /usr/include под macOS, поскольку Apple добавила «Защита целостности системы» (SIP) в macOS 10.11 El Capitan (около октября 2015 г.). Вам нужно будет использовать /usr/local/lib или, может быть, где-то под /opt.

Затем необходимо определить, настроен ли ваш компилятор C для поиска заголовков в /usr/local/include и библиотек в /usr/local/lib по умолчанию. Если это не так, вам нужно добавить -I /usr/local/include и -L /usr/local/lib в командную строку. (Если вы поместите свою библиотеку в /opt, вам определенно потребуются сопоставимые параметры с соответствующим значением.)

Вы можете найти некоторые соответствующие ссылки в Может ли Mac OS X El Capitan запускать программное обеспечение, скомпилированное для Yosemite, которое ожидает библиотеки в / usr / gnu64 / lib? Ответ на главный вопрос этой ссылки: «Нет не может ".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...