Свяжите статическую библиотеку в gcc без указания префикса 'lib'

В соответствии с этим вопросом, команда gcc -l требует, чтобы ваша библиотека называлась libXXX.a.

Есть ли способ связать статическую библиотеку с помощью другой команды с gcc? Цель состоит в том, чтобы избежать этого префикса lib.

2 ответа

Просто передайте библиотеку, как в исходном файле:

gcc main.c yourlibrary.a -o prog


Как сказал nunzio. Просто передайте его непосредственно в качестве входного файла. Он избил меня, но здесь полный пример.

mylib.c:

#include <stdio.h>
void say_hi(void) 
{ 
 printf("hi\n"); 
}
</stdio.h>

main.c:

extern void say_hi(void);
int main(int argc, char**argv)
{
 say_hi();
 return 0;
}

Makefile:

main: main.c mylib.a
 gcc -o main main.c mylib.a
mylib.a: mylib.o
 ar rcs mylib.a mylib.o
mylib.o: mylib.c
 gcc -c -o $@ $^

Я понимаю, что это предполагает некоторые базовые знания в Make. Чтобы сделать то же самое без make, выполните следующие команды:

gcc -c -o mylib.o mylib.c
ar rcs mylib.a mylib.o
gcc -o main main.c mylib.a

licensed under cc by-sa 3.0 with attribution.