Если вы должны использовать опцию `-llibary` в clang
Хотите знать, если вы должны использовать опцию -llib в Clang. Например:
clang -lasdf foo.c -o foo.o
свяжу библиотеку /usr/local/lib/libasdf.dylib
в foo.c
, но интересно, есть ли способ не включать его, чтобы он работал как другие системные библиотеки, где вы можете просто сделать #include <math.h>
и не нужно ничего связывать.
Или, возможно, это то, о чем они говорят здесь:
Библиотека libSystem также включает функции, которые вы обычно ожидаете найти в libc и libm, службы RPC и средство распознавания имен. Поскольку libSystem автоматически связывается с вашим приложением, вам не нужно явно добавлять его в строку компилятора. Для вашего удобства многие из этих библиотек существуют как символические ссылки на libSystem, поэтому, хотя явная ссылка на -lm (например) не нужна, она не вызовет ошибку
1 ответ
На странице руководства Apple ld, который -llib
опция передается:
-lx Эта опция говорит компоновщику искать libx.dylib или libx.a в пути поиска библиотеки. Если строка x имеет форму yo, то этот файл ищется в тех же местах, но без добавления "lib" или добавления ".a" или ".dylib" к имени файла.
Из этого не похоже, что есть какой-то способ не использовать -l
потому что все, что делает флаг - это говорит компоновщику найти библиотеку, а затем связать ее с исполняемым файлом. Он не включается автоматически, поскольку он не является частью библиотеки libSystem, на которую вы ссылались, которая, по-видимому, является единственной автоматически связанной библиотекой в macOS. Библиотеки в /usr/local/lib/ (по крайней мере, в MacOS) не являются системными библиотеками в том смысле, что они будут автоматически связаны, поскольку / usr / local / lib обычно используется для установленных пользователем библиотек.