题目要求:用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