myod

题目要求:用c语言实现Linux里的od -tx -tc xxx命令

本次选做作业中的od -tx -tc的意思就是将一个文件输出为包含文件ascii码、以及16进制的输出格式。
od -tx -tc输出test.txt:

过程及代码:

main.c:

myod.c:

myod.h:

makefile:

运行结果:

最后生成的tree:

问题

1.经对比发现相差不大。

2.在编写makefile时每行代码都试了一遍,唯独动态库无法生成,检查发现生成myod.o的命令行少了-fPIC

查阅资料发现其实不加-fPIC也能生成动态库,但是对于源文件有要求,因为不加fPIC编译的so必须要在加载到用户程序的地址空间时重定向所有表目,所以在它里面不能引用其它地方的代码,加上-fPIC选项的 源文件对于它引用的函数头文件编写有很宽松的尺度。比如只需要包含个声明的函数的头文件,即使没有相应的C文件来实现,编译成so库照样可以通过。

参考资料:https://www.cnblogs.com/fengliu-/p/10216878.html

posted on 2021-09-26 16:24  20191324  阅读(69)  评论(0)    收藏  举报