Если я зайду в /usr/local/lib
, я увижу кучу папок и .dylib
файлов, динамически связанных библиотек файлов, в которых я почти уверен.Если я перейду к /usr/local/include
, у него будет куча .h
файлов, в каждом из которых есть нескомпилированный исходный код на языке С.
Если я поместу файл .h
в /usr/local/include/mylib.h
, и яиметь локальный файл .c
или .h
, скажем, ~/Desktop/test/foo.c
, тогда внутри foo.c
я могу включить mylib.h
:
~/Desktop/test/foo.c
#include <mylib.h>
int
main() {
puts("Hello World");
return 0;
}
Если я буду следовать этому , я напишу это в терминале:
$ clang -Xlinker -v
@(#)PROGRAM:ld PROJECT:ld64-351.8
configured to support archs: armv6 armv7 armv7s arm64 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em (tvOS)
Library search paths:
/usr/lib
/usr/local/lib
Framework search paths:
/Library/Frameworks/
/System/Library/Frameworks/
Итак, /usr/local/lib
там, который представляет собой набор .dylib
файлов.Я не могу изменить /usr/lib
.
У меня вопрос, как я могу взять локальную библиотеку C, такую как ~/Desktop/test/mylib.{c,h}
, и интегрировать ее в места установки этих других библиотек C, подобно тому, что делает homebrewвероятно.
Я хотел бы иметь возможность включать библиотеку с <угловыми скобками> вместо "кавычек".
Так что у меня есть библиотека mylib.h
и mylib.c
.
mylib.c
#include "mylib.h"
void
print(char* str) {
puts(str);
}
mylib.h
#include "stdlib.h"
#include "stdio.h"
extern
void
print(char* str);
Тогда у меня есть foo.c
, который включает его.
foo.c :
#include <mylib.h>
int
main() {
print("Foo");
return 0;
}
Вопрос в том, как мне скомпилировать mylib
и foo.c
с Clang, чтобы я мог #include <mylib.h>
сугловые скобки в любом проекте, например foo.c
.
. Я строил их так:
build:
@clang -shared -fpic -O2 \
-install_name mylib.dylib \
-o mylib.dylib \
mylib.c
@clang foo.c build.dylib -o foo
@./foo
.PHONY: build
Кажется, это работает, но теперь вопрос в том, как разместить их программно (безXCode) в нужное место, чтобы он работал с загрузкой через угловые скобки.