【发布时间】:2017-11-22 10:09:52
【问题描述】:
当我用 POCO 做一个应用程序时,我发现了一个奇怪的关于编译错误的事情。
我根据检查其他人的类似问题添加了-lrt。但是,它仍然不起作用。
/usr/local/lib//libPocoFoundation.a(SharedMemory.o): 在函数中
Poco::SharedMemoryImpl::SharedMemoryImpl(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long, Poco::SharedMemory::AccessMode, void const*, bool)': SharedMemory.cpp:(.text+0x2ab): undefined reference toshm_open' SharedMemory.cpp:(.text+0x31b): 未定义引用shm_unlink' /usr/local/lib//libPocoFoundation.a(SharedMemory.o): In functionPoco::SharedMemoryImpl::close()': SharedMemory.cpp:(.text+0x666): 未定义对“shm_unlink”collect2 的引用:错误:ld 返回 1 退出状态 Makefile:17:目标“测试”的配方失败 make:*** [测试] 错误 1
神奇的是,如果我添加一个如下所示的虚拟函数。
int dummy()
{
const char *memname = "sample";
const size_t region_size = sysconf(_SC_PAGE_SIZE);
int fd = shm_open(memname, O_CREAT | O_TRUNC | O_RDWR, 0666);
if (fd == -1)
return -1;
int r = shm_unlink(memname);
if (r != 0)
return -1;
}
已成功构建。
我不明白为什么 & 想要搜索正式文件以避免这种奇怪的解决方法。 请问有人可以帮忙吗?
另外,我检查了 libPocoFoundation.a 并找到了两者
shm_open
shm_unlink
属于'符号未定义'
提前致谢。
【问题讨论】:
-
你有一个链接错误。我们需要查看失败的链接命令来帮助您。在您的问题正文中发布未经编辑的完整构建日志。
标签: gcc linker-errors shared-memory poco poco-libraries