最近更新了开发机器的ubuntu的版本,linux内核进行了升级,gcc版本也升级到了4.7。之后奇怪的事情就出现了,在之前的编译器好好的make,最新的系统就会报错,出现大量的系统调用没有定义。这些系统都是存在unistd.h中。在gcc/g++ 4.6版本中,这些都是默认被include的,但是到了4.7版本,这些就不是默认include的了。所以需要在头文件中include unistd.h这个头文件,保证系统调用在编译过程中是有定义的。
这个问题在mail list中,似乎也有印证:
当然解决方案也可以是你用alternative去切换你当前编译使用的gcc/g++版本。
本文介绍了一次Ubuntu系统升级后遇到的问题,gcc版本升级到4.7后,原本正常的编译过程开始报错,提示大量系统调用未定义。经过排查发现,这些系统调用在之前的gcc版本中默认包含,但在4.7版本中需要显式包含unistd.h。文章给出了两种解决方法:一是手动包含头文件,二是切换gcc版本。
2023

被折叠的 条评论
为什么被折叠?



