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

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-10 14:20:09

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

linux下出现undefined reference to mysql init&#39; 的解决方法

查看mysql配置的命令叫:mysql_config -L/usr/lib64/mysql -lmysqlclient \ 1.命令行后加入 -lmysqlclient 附有一个查看mysql配置的命令叫:mysql_config 再分享一下我老师大神的人工智能教程吧.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net linux下出现undefined reference to mysql init' 的解决方法 原

undefined reference to 问题汇总及解决方法 ----- 还有一种问题没有解决(可能是顺序问题)

1.链接时缺失了相关的目标文件 2.链接时缺少了相关的库文件 3.链接的库文件中有使用了另一个库文件 4.多个库文件链接顺序问题 5.定义与实现不一致 6.在c++代码中链接C语言的库 转载地址: https://segmentfault.com/a/1190000006049907?utm_source=tuicool&utm_medium=referral 在实际编译代码的过程中,我们经常会遇到"undefined reference to"的问题,简单的可以轻易地解决,但

cocos2d-x发生undefined reference to `XX&#39;异常 一劳永逸解决办法

cocos2d-x发生undefined reference to `XX'错误 一劳永逸解决方法 参考文章: http://blog.csdn.net/kafeidev/article/details/9157895 http://blog.csdn.net/fu_zk/article/details/12836431 eclipse cocos2dx项目,出现错误 E:/Acocos2d-x/cocos2d-1.0.1-x-0.11.0/MyBilliard/android/jni/../.

cocos2d-x发生undefined reference to `XX&#39;异常 一劳永逸解决的方法

转自:http://www.myexception.cn/operating-system/1620542.html cocos2d-x发生undefined reference to `XX'错误 一劳永逸解决方法 參考文章: http://blog.csdn.net/kafeidev/article/details/9157895 http://blog.csdn.net/fu_zk/article/details/12836431 eclipse cocos2dx项目.出现错误 [plai

GCC编译uboot出现(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0&#39;错误的解决办法

/opt/arm-2010.09/bin/../lib/gcc/arm-none-linux-gnueabi/4.5.1/armv4t/libgcc.a(_bswapsi2.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0' make: *** [u-boot] Error 1 一旦编译uboot出现上述错误,请不要慌张!解决办法官网已经给出,主要解决办法如下: vim 打开./lib_arm/eabi_com

[转]关于[Linker error] undefined reference to `[email&#160;protected]&#39;的解决办法

在网上搜到的一个很完整的叙述,就直接帖过来了.如下:**************************************************** 说明: 常遇到的socket网络编程问题. 在工程里已经#include <winsock2.h>了结果还是报错,郁闷死了,我用的是Dev-C++,起先还以为是IDE的问题,结果换成VC6.0还是同样的错误.最后在网上终于找到问题的原因,很快搞定了.顺便做一下笔记,以防以后再出现这种问题. VC6.0下的错误信息: error LNK20

ECLIPSE中部署工程报“Undefined exploded archive location”错误的解决方法。

错误信息为:Undefined exploded archive location 原因:在工程转移过程中,导致工程的配置文件出错: 解决方法:           1.在工程目录下的.mymetadata文件中可能webrootdir被改无效了(把下面内容拷到你的.mymetadate文件中的相应位置上):或者有可能少了这context-root这个属性:添加上这个属性即可,内容如下:             context-root="/上面的name属性值"          

Qt的“undefined reference to `vtable for”错误解决(手动解决,加深理解)

使用QT编程时,当用户自定义了一个类,只要类中使用了信号或槽. Code::Blocks编译就会报错(undefined reference to `vtable for). Google上有很多这个问题的回答,但很多说的很模糊,或者根本就不可行. 其实,QT有自己的编译方法. 不用IDE写一个类,QT的编译步骤是: 1, cd 源代码目录 2, qmake -project 3, qmake project_name.pro 4, make (如果你装的是minGW的话,就用minGW-mak

Spark SQL: Error in query: undefined function错误的解决方法

本文原文出处: http://blog.csdn.net/bluishglc/article/details/50748937 严禁任何形式的转载,否则将委托CSDN官方维护权益! 问题描述 如果你在Spark SQL上试图调用在HIVE注册的自定义函数(UDF)时,你可能会遇到这样的错误: Spark SQL: Error in query: undefined function xxxxxx 这个问题发生在Spark 1.5.0, 1.5.1和1.5.2版本上,对此Spark官方有一个专门的