gcc/g++ undefined reference to function() 问题的解决方法

g++ 编译一个程序g++ shm.c -o shm,
用到了 shm_open(), shm_unlink()函数,编译出现了下面的错误:

/tmp/ccL2cbha.o: In function `del_resource()':
shm.c:(.text+0x1b3): undefined reference to `shm_unlink'
/tmp/ccL2cbha.o: In function `main':
shm.c:(.text+0x872): undefined reference to `shm_open'
collect2: error: ld returned 1 exit status

后来翻阅shm_open()文档,赫然发现下面的内容:
在终端中输入 man shm_open 回车:

SYNOPSIS
       #include <sys/mman.h>
       #include <sys/stat.h>        /* For mode constants */
       #include <fcntl.h>           /* For O_* constants */

       int shm_open(const char *name, int oflag, mode_t mode);

       int shm_unlink(const char *name);

       Link with -lrt.

Link with -lrt 表明编译的时候要加上 -lrt 。
所以正确的编译命令应该是:
g++ shm.c -lrt -o shm

我想类似与于这种编译错误,好方法是看man文档,找是否需要显示链接其他库。

阅读更多
文章标签: gcc linux c-c++
个人分类: C编程 Linux C++
上一篇Libevent 学习笔记 (1)——Libevent 2.0安装与简单示例
下一篇VS2010+Source Insight +PC-Lint开发环境搭建
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭