Gre*_*age 6 c gcc static-libraries
根据这个问题,gcc的-l
命令要求你的库名为libXXX.a.
有没有办法使用不同的命令与gcc链接静态库?目标是避免使用此lib-前缀.
像nunzio说的那样.只需将其作为输入文件直接传递即可.他打败了我,但无论如何,这是一个完整的例子.
mylib.c:
#include <stdio.h>
void say_hi(void)
{
printf("hi\n");
}
Run Code Online (Sandbox Code Playgroud)
main.c中:
extern void say_hi(void);
int main(int argc, char**argv)
{
say_hi();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
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 $@ $^
Run Code Online (Sandbox Code Playgroud)
我意识到这假设了Make的一些背景知识.要做同样的事情,请按顺序运行这些命令:
gcc -c -o mylib.o mylib.c
ar rcs mylib.a mylib.o
gcc -o main main.c mylib.a
Run Code Online (Sandbox Code Playgroud)