今天看csapp读到了那个 shellex 觉着有意思,就拿到代码在虚拟机上编译运行。
遇到了下面这些坑:
- 如果你导入的头文件不是标准库的头文件,而是你自己定义的头文件(包括.h 和.c文件)那你在gcc编译的时候,就得把.c文件也带上(gcc -o shellex shellex.c csapp.c 其实链接那章讲过了)
- 还有就是头文件<pthread.h>,编译的时候却报错“对pthread_create未定义的引用“,因为 pthread库不是Linux系统默认的库,连接时需要使用库libpthread.a,所以在使用pthread_create创建线程时,在编译中要加-lpthread参数:gcc createThread.c -lpthread -o createThread. 加上这个以后编译成功!
- 最后就是,如果用gcc在磁盘,u盘,或者共享文件夹下编译是没有执行权限的,也增加不了执行权限(本来因为懒没有把文件移动到虚拟机上,只是在共享文件夹下操作),所以要移出来再修改权限(用make编译时就没有这些毛病,很奇怪)。