当前目录下总共有四个源文件:slib.h、slib1.c、slib2.c、main.c,其中slib.h是公共头文件,slib1.c将编译成静态库libslib1.a,slib2.c将编译成静态库libslib2.a,main.c是主程序,链接libslib1.a和libslib1.a。
// slib.h
#include <stdio.h>
int add(int a, int b);
void print(const char *str);
int sub(int a, int b);
void print2(const char *str);
// slib1.c
#include "slib.h"
int add(int a, int b)
{
return a + b;
}
void print(const char *str)
{
if(str)
printf("file:%s, fun:

本文详细介绍了在Linux环境下,如何编译和链接静态库,包括生成.o中间文件、.a静态库文件及最终可执行文件。在过程中强调了同名函数可能导致的链接错误,以及链接命令中源文件和静态库选项顺序的重要性。链接时,编译器遵循从左到右的顺序解析函数,源文件前的静态库选项需包含所有需要的函数定义,否则会导致找不到函数定义的错误。此问题的正确理解和解决能避免不必要的调试困扰。
最低0.47元/天 解锁文章
1857

被折叠的 条评论
为什么被折叠?



