关闭

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

标签: gcclinuxc-c++
1451人阅读 评论(0) 收藏 举报
分类:

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文档,找是否需要显示链接其他库。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:33704次
    • 积分:564
    • 等级:
    • 排名:千里之外
    • 原创:23篇
    • 转载:0篇
    • 译文:0篇
    • 评论:4条
    文章分类
    最新评论