g++ test.cpp -L./ -lmylib -o test
请问,编译器是如何判断 mylib 是静态库还是动态库?是通过后缀吗?那直接改后缀可以吗?
g++ test.cpp -L./ -lmylib -o test
请问,编译器是如何判断 mylib 是静态库还是动态库?是通过后缀吗?那直接改后缀可以吗?
|
1
测试了一下,直接改.a 为.so 是可以正常编译运行 test 的
|
|
lcdtyphMar 30, 2019 via iPhone
2
|
|
GcourageMar 30, 2019 via Android
4
用 file 命令可以查看是什么文件。
g++最终会调动 ld 命令去链接的,应该 ld 工具会根据文件来做静态链接,还是动态链接。 Linux 上对文件后缀名不太敏感 |
|
5
@lcdtyph 这个倒是了解一点,主要是除了后缀之外,动态库和静态库的区别是什么,为什么 file 出来的结果会不一样?
|
|
liuminghao233Mar 30, 2019 via iPhone
6
csapp 705 页
|
|
PPing520Mar 30, 2019
7
静态库是打包在可执行文件一起的,动态库的动态链接有多种情况:1,启动时链接,2,运行时链接,并不包含在可执行文件之中
|
|
lcdtyphMar 30, 2019 via iPhone
8
|
|
mikeguanMar 30, 2019 via Android
9
Linux 是根据魔数确定文件类型的,一般情况下和后缀没关系。
|