其他分享
首页 > 其他分享> > myod

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

标签:tx,fPIC,od,生成,tc,myod
来源: https://www.cnblogs.com/pxmxxr/p/15338731.html