1,o文件生成的命令
创建main.c内容如下
#include <stdio.h>
int main()
{
/* Write C code in this online editor and run it. */
printf("Hello, World! \n");
return 0;
}
使用命令:gcc -c main.c -o main.o 生成o文件
然后使用命令 : ar rcs test.a test.o 生成a文件
结果将会生成
2,o文件的使用
内容如下
///mian.c
#include<stdio.h>
#include"add.h"
int main()
{
int ret = myAdd(10,20);
printf("%d",ret);
return 0;
}
/ add.h
#include<stdio.h>
int myAdd(int a,int b);
add.c
#include"add.h"
int myAdd(int a, int b)
{
return a + b;
}
使用命令:
gcc -c add.c -o add.o //
ar rcs add.a add.o
使用命令:ar t add.a
验证a文件中包含那几个.o
方法一:
当.a的名字为libadd.a时
则使用命令:gcc -o myprogram main.c -L. -ladd
这里-L.
告诉gcc在当前目录(.
表示当前目录)中查找库,而-ladd
告诉它链接名为libadd.a
的库(gcc会自动在库名前添加lib
并在库名后添加.a
)。如果你的test.a
不在当前目录,你需要将-L
后面的.
替换为库文件的实际路径。
静态库名称正确:如果你的静态库文件名为 add.a
而不是 libadd.a
,则链接时不能使用 -ladd
。在链接时,链接器期望的是 lib
前缀和 .a
后缀的库文件。如果你没有 libadd.a
,你需要重命名你的 add.a
为 libadd.a
,或者在链接时指定不带 lib
前缀的完整文件名
结果验证:
方法二:使用add.a 直接链接
使用命令:gcc main.c add.a -o main.exe