Si tienes que usar la opción `-llibary` en clang

Si tienes que usar la opción `-llibary` en clang

Me pregunto si tienes que usar el-llibopción en sonido metálico. Por ejemplo:

clang -lasdf foo.c -o foo.o

vinculará la biblioteca /usr/local/lib/libasdf.dyliba foo.c, pero me pregunto si hay alguna manera de no tener que incluirla, para que funcione como otras bibliotecas del sistema, donde puede hacerlo #include <math.h>y no es necesario vincular nada.

O tal vez de eso están hablandoaquí:

La biblioteca libSystem también incluye funciones que normalmente esperaría encontrar en libc y libm, servicios RPC y un solucionador de nombres. Debido a que libSystem se vincula automáticamente a su aplicación, no necesita agregarlo explícitamente a la línea de vínculo del compilador. Para su comodidad, muchas de estas bibliotecas existen como enlaces simbólicos a libSystem, por lo que, si bien no es necesario vincular explícitamente a -lm (por ejemplo), no causará un error.

Respuesta1

Desde la página del manual de ld de Apple, -lliba la que se pasa la opción:

-lx Esta opción le dice al vinculador que busque libx.dylib o libx.a en la ruta de búsqueda de la biblioteca. Si la cadena x tiene la forma yo, entonces ese archivo se busca en los mismos lugares, pero sin anteponer 'lib' ni agregar '.a' o '.dylib' al nombre del archivo.

A partir de esto, no parece que haya alguna forma de no usarlo -lporque todo lo que hace el indicador es decirle al vinculador que busque una biblioteca y luego la vincule al ejecutable. No se incluye automáticamente porque no forma parte de la biblioteca libSystem a la que hizo referencia, que parece ser la única biblioteca vinculada automáticamente en macOS. Las bibliotecas en /usr/local/lib/ (al menos en MacOS) no son bibliotecas del sistema, en el sentido de que se vincularían automáticamente, porque /usr/local/lib se usa generalmente para bibliotecas instaladas por el usuario.

información relacionada