实验目标:
是在libc.a静态库中添加自己写的函数,并写测试程序进行调用添加的函数。
实验步骤:
1. 制作目标文件
(1)编写目标文件的源文件(obj_add.c),代码如下:
1 #include <stdio.h>
2
3 void test(void)
4 {
5 printf("test obj, add by salmon\n");
6 return;
7 }
(2)编译目标文件的源代码:
$gcc -c obj_add.c -o obj_add.o
生成的obj_add.o即制作好的目标文件。
2. 新目标文件添加到libc.a中,生成新的libc.a,并替换原libc.a
(1)从/usr/lib中把libc.a复制出来(同时做个备份),最好放到新建的目录下,解压libc.a:
$ar -x libc.a
可以看到目录下解压出很多.o文件
(2)把自己制作的目标文件放到这个目录下
(3)在这个目录下生成新的libc.a
$ar -rcs libc.a *.o
(4)新生成的libc.a替换原libc.a
$sudo cp libc.a /usr/lib/libc.a -i
/usr/lib/libc.a被覆盖掉
3. 在/usr/include目录下新建obj_test.h头文件,声明自己写的目标文件中的函数,内容如下:
1 #ifndef _OBJ_TEST_H
2 #define _OBJ_TEST_H
3
4 extern void test(void);
5
6 #endif
4. 写测试程序(obj_test.c),并进行静态编译:
1 #include <obj_test.h>
2
3 int main(void)
4 {
5 test();
6 return 0;
7 }
编译:$gcc -static obj_test.c -o obj_test.elf
(一定要进行静态编译哦)
5.执行编译的可执行程序,看运行结果。
$./obj_test.elf
test obj, add by salmon
与预想的一致,实验成功。
最后实验结束别忘了把原版的/usr/lib/libc.a替换回来。并删除/usr/include/obj_test.h
本人新手,初学linux c编程,有不足之处请大家指教!
salmon