سؤال

When I link a library such as libm in with ld, I need to drop the lib prefix. What if the file does not follow this naming convention? Is there a way to link it other than renaming the file?

هل كانت مفيدة؟

المحلول

You can link against any library, e.g. foo.a, by specifying full path to it on the link line:

gcc main.o /path/to/foo.a

What you lose with non-standard library name is the ability for the linker to search for it, e.g. this will not work:

gcc main.o -L/path/to foo.a

You can avoid that lack of search by using -l:foo.a syntax:

gcc main.o -L/path/one -L/path/two -l:foo.a

When I link a library such as libm in with ld

Note that in general you should not link anything with ld. Use the compiler driver instead -- it adds objects and libraries to the link line that are required for correct result.

نصائح أخرى

You can have the linker search for a library named without the lib prefix:

gcc main.o -L/path/to/foo -l:foo.a

This is especially useful in environments where a list of libraries is specified and the -l flag is prepended later (eg some makefiles or eclipse CDT)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top