【发布时间】:2017-03-06 19:24:30
【问题描述】:
我尝试用-nostdlib 编译一个名为write 的简单程序,但出现错误:
/path/to/file:3: undefined reference to `write'
我认为write 是 Unix 的东西并且一直存在,但显然不是,结果 libc 具有 write 功能。我找到了源代码:
/* Write NBYTES of BUF to FD. Return the number written, or -1. */
ssize_t
__libc_write (int fd, const void *buf, size_t nbytes)
{
if (nbytes == 0)
return 0;
if (fd < 0)
{
__set_errno (EBADF);
return -1;
}
if (buf == NULL)
{
__set_errno (EINVAL);
return -1;
}
__set_errno (ENOSYS);
return -1;
}
libc_hidden_def (__libc_write)
stub_warning (write)
weak_alias (__libc_write, __write)
libc_hidden_weak (__write)
weak_alias (__libc_write, write)
这一切似乎都是在设置errno。 __libc_write如何写入文件描述符?
【问题讨论】:
-
嗯,
stub_warning让我觉得这个源代码只是一个 stub 函数...你在哪里找到的?