Link gcc 中的静态库,无需指定 'lib' 前缀
Link a static library in gcc without having to specify the 'lib' prefix
根据 this 问题,gcc 的 -l
命令要求您的库被命名为 libXXX.a.
有没有办法 link 使用 gcc 的不同命令的静态库?目标是避免这个 lib- 前缀。
像这样在输入文件中传递库:
gcc main.c yourlibrary.a -o prog
就像农齐奥说的。只需将其作为输入文件直接传递即可。他先于我,但这里有一个完整的例子。
mylib.c:
#include <stdio.h>
void say_hi(void)
{
printf("hi\n");
}
main.c:
extern void say_hi(void);
int main(int argc, char**argv)
{
say_hi();
return 0;
}
生成文件:
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 背景知识。做同样的事情 w/o 按顺序 运行 这些命令:
gcc -c -o mylib.o mylib.c
ar rcs mylib.a mylib.o
gcc -o main main.c mylib.a
根据 this 问题,gcc 的 -l
命令要求您的库被命名为 libXXX.a.
有没有办法 link 使用 gcc 的不同命令的静态库?目标是避免这个 lib- 前缀。
像这样在输入文件中传递库:
gcc main.c yourlibrary.a -o prog
就像农齐奥说的。只需将其作为输入文件直接传递即可。他先于我,但这里有一个完整的例子。
mylib.c:
#include <stdio.h>
void say_hi(void)
{
printf("hi\n");
}
main.c:
extern void say_hi(void);
int main(int argc, char**argv)
{
say_hi();
return 0;
}
生成文件:
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 背景知识。做同样的事情 w/o 按顺序 运行 这些命令:
gcc -c -o mylib.o mylib.c
ar rcs mylib.a mylib.o
gcc -o main main.c mylib.a