在编译源文件时,有时需要链接到静态库。假如要编译hello.c,需要用到同目录下的静态库liba.a,那么通常会这样写:
gcc hello.c -L. -la -o hello
其中-L.表示将当前目录加入库搜索路径,-la表示链接到库a。链接器首先会尝试动态库liba.so,如果没有找到,会继续尝试静态库liba.a。
也可以把静态库直接作为输入文件的一部分:
gcc hello.c liba.a -o hello
如果需要用到两个静态库liba.a和libb.a,可能会很自然写出这样的命令
gcc hello.c -L. -la -lb -o hello
不过这里就引入了一个问题,细心的人可能已经注意到了:a和b的顺序有影响吗?可不可以这样写呢
gcc hello.c -L. -lb -la -o hello
今天就来研究一下这个问题吧
gcc hello.c -L. -la -o hello
其中-L.表示将当前目录加入库搜索路径,-la表示链接到库a。链接器首先会尝试动态库liba.so,如果没有找到,会继续尝试静态库liba.a。
也可以把静态库直接作为输入文件的一部分:
gcc hello.c liba.a -o hello
如果需要用到两个静态库liba.a和libb.a,可能会很自然写出这样的命令
gcc hello.c -L. -la -lb -o hello
不过这里就引入了一个问题,细心的人可能已经注意到了:a和b的顺序有影响吗?可不可以这样写呢
gcc hello.c -L. -lb -la -o hello
今天就来研究一下这个问题吧