这将汇编main.c
并将创建的.o
文件与abc
库静态链接,并与xyz
动态链接
gcc main.c -Wl,-Bstatic -labc -Wl,-Bdynamic -lxyz -o main
但我不确定其他一些组合:
这会将main.c
汇编为main
- 但-lm
在这种情况下会做什么?
gcc main.c -o main -lm
我们在这里使用-Wl
让我们为链接器提供一些选项:-Bstatic, -lm
说它应该与m
库(libm)静态链接 - 但是-Wl,-Bdynamic
1}}在这里做什么?与哪个图书馆相关?
gcc main.c -o main -Wl,-Bstatic -lm -Wl,-Bdynamic
gcc main.c -o main -Wl,-Bstatic -lm -Wl,-Bdynamic
-static
旗帜在这做什么?为什么在main.c
之前呢?
gcc -static main.c -o main -lm
答案 0 :(得分:1)
A
将链接到-lm
。默认情况下,gcc将首先搜索共享库。如果找不到共享版本,则会搜索静态版本。libm
是为了确保使用标准库的共享版本(即-Wl,-Bdynamic
)。libc
阻止与共享库的链接。它可以放在命令行的任何位置,并具有相同的效果。这与-static
不同,因为-Wl,-Bstatic
适用于所有库的链接,而-static
仅适用于命令行之后的库。请注意,-Wl,-Bstatic
也与-static
不同。前者是gcc驱动程序选项,可以阻止所有动态链接。后者是ld选项,是-Wl,-static
的别名。