奇怪的 posix 消息队列链接问题 - 有时它无法正确链接

2024-02-07

当我构建以下代码时,它构建得很好。如果我更改代码以注释掉“while”,使用相同的命令行,它不会构建(见下文)

#include <stdio.h>
#include <mqueue.h>

int main(int argc, char *argv[]) {
   while (1) { }

   mq_open("/YouSUCK", O_RDWR | O_CREAT | O_EXCL, S_IRWXU | S_IRWXG, NULL);

   return 0;
}

dada@thud:~/RaspberryPI$ gcc -g -Wall -lrt -o mqtest mqtest.c

dada@thud:~/RaspberryPI$ 

#include <stdio.h>
#include <mqueue.h>

int main(int argc, char *argv[]) {
//   while (1) { }

   mq_open("/YouSUCK", O_RDWR | O_CREAT | O_EXCL, S_IRWXU | S_IRWXG, NULL);

   return 0;
}

dada@thud:~/RaspberryPI$ gcc -g -Wall -lrt -o mqtest mqtest.c

/tmp/cccw376u.o: In function `main':

/home/dada/RaspberryPI/mqtest.c:7: undefined reference to `mq_open'

collect2: ld returned 1 exit status

dada@thud:~/RaspberryPI$

有任何想法吗 ?

dada@thud:~/RaspberryPI$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.6/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.6.3-1ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)

Update:

看起来像是编译器版本问题,我在不同的盒子上构建了相同的代码,并且它可以使用上述文件中的任何一个正确构建。所以我想我需要一个不同的编译器。

dada@JoesPi ~ $ gcc -v

Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/4.6/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: ../src/configure -v --with-pkgversion='Debian 4.6.3-14+rpi1' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --disable-sjlj-exceptions --with-arch=armv6 --with-fpu=vfp --with-float=hard --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf
Thread model: posix
gcc version 4.6.3 (Debian 4.6.3-14+rpi1)

'对 mq_open 的未定义引用'collect2:

链接到库。例如。-lrt

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

奇怪的 posix 消息队列链接问题 - 有时它无法正确链接 的相关文章

随机推荐

  • 如何使用同一个工人让芹菜重试?

    我刚刚开始在 Django 项目中使用 celery 并且有点陷入这个特定问题 基本上 我需要将长期运行的任务分发给不同的工作人员 该任务实际上分为几个步骤 每个步骤都需要相当长的时间才能完成 因此 如果某个步骤失败 我希望 celery
  • mclapply 与大对象 - “序列化太大,无法存储在原始向量中”

    我一直遇到一个问题multicore包裹和大物体 基本思想是我使用 Bioconductor 函数 readBamGappedAlignments 读取大对象 我有一个文件名的字符向量 并且我一直在使用mclapply循环遍历文件并将它们读
  • iOS7 中旋转后 UITextview 文本不显示顶行

    我有一个包含显示静态文本的 UITextview 的应用程序 我使用 UITextview 来滚动文本 该文本比 UILabel 中可以显示的长得多 由于某种原因 iOS 7 下 UITextview 中的文本在旋转后不会保持滚动到顶部 在
  • Django /subdirectory/admin/ 重定向到 /admin/login/?next=/admin/

    我在端口 8011 上设置了一个 Django 服务器 并让 nginx 将其作为端口 80 上的子目录 静态文件 很好 页数 不错 但是当我访问 subdirectory admin 时 它需要我 admin login next adm
  • 是什么限制了我的 PHP 资源?

    我在从 PHP 中获取更多内存时遇到问题 这是错误消息 Fatal error Allowed memory size of 20971520 bytes exhausted tried to allocate 82 bytes in Ye
  • 存储大量数据的最智能方式

    我想通过 REST 请求访问 flickr API 并下载大约的元数据 1 张 Mio 照片 也许更多 我想将它们存储在 csv 文件中 然后将它们导入 MySQL 数据库以进行进一步处理 我想知道处理如此大数据的最明智的方法是什么 我不确
  • 在 fancybox 中加载图像 150% 的大小

    我只是创建一个愚蠢的 GIF 画廊 其中显示一个缩略图 单击时相关的 GIF 将被加载并显示在一个 fancybox 中 我的 fancybox 的代码是这样的 fancyGIF fancybox arrows false openEffe
  • XML 元素和命名空间

    我有以下方法来解析 XMLElements DisplayMessages XElement root var items root Descendants Item foreach var item in items var name i
  • D 中的模板参数推理

    我正在编写一些对静态 D 数组进行操作的向量函数 如下所示 real N unit uint N real N v real N u v norm v explicit type necessary to force slice opera
  • iOS 即席分发

    我目前已经完成了 iOS 应用程序的制作 我想使用临时分发方式在我的同事之间分发该应用程序 我只有两个月的 XCode 经验 对于向同事发送应用程序需要哪些材料 我感到很困惑 我不想犯下无法挽回的错误 为了将应用程序分发给其他人 我需要捆绑
  • pdf生成后如何打开打印对话框?

    我编写了一些动态生成 PDF 文件的操作 类似 reports reportGenerator action 当我打电话时reports reportGenerator param dialy它将在弹出窗口中打开生成的 pdf 然后我可以按
  • 我可以向同一台服务器发出 CURL 请求吗?

    我需要实现一种方法来对位于同一服务器或另一服务器上的页面进行 POST 调用 我们不能使用 include 因为我们调用的文件通常调用不同的数据库或具有相同名称的函数 我一直在尝试使用curl 来实现这一点 虽然它在从另一台服务器调用文件时
  • 跟踪文件但将其从 git 包中排除

    我有一个有点复杂的 ansible 工作流程 我有两个气隙网络 我在两个网络上开发剧本 所以我有两个由 git 管理的有点独立的 ansible 存储库 同时 大多数剧本都可以在这两个地方使用 使事情复杂化的是 这是一种单向转移 我可以从网
  • Jquery animate() 和 google chrome 问题

    我在 google Chrome 中遇到 jquery 和 animate 问题 我有一个最初隐藏的盒子 位于屏幕的右侧 当单击一个框时 隐藏的框变得可见并从右到中心动画 它停止并闪烁 然后它开始再次移动到屏幕的左侧并消失 这个东西适用于
  • 从 WebForm 使用 MVC HtmlHelper

    我正在向混合 WebForms MVC 站点添加一些 UI 功能 在本例中 我将一些 AJAX UI 功能添加到 WebForms 页面 通过 jQuery 并且数据来自 MVC JsonResult 一切都 100 正常工作 但有一个例外
  • Homestead 2 xdebug 不起作用

    我有一个 Homestead vagrant VM 设置 Xdebug 是开箱即用的远程调试的所有设置 我可以在这里看到这个 etc php5 fpm conf d 20 xdebug ini 并通过做一个php i grep xdebug
  • 在 Q 中链接任意数量的 Promise

    我想发送 N 次 HTTP 请求 我希望最终获得有关每个请求的结果的信息 运行一次请求函数效果很好 这是使用 Q defer 的 HTTP 请求函数 function runRequest var deferred Q defer star
  • 专门用于 :hover 的元素覆盖 :active 的等效类

    我有代码为背景分配了一个类的字体颜色 然后有单独的类用于更改 hover 或 active 上的颜色 但 active 状态不会触发 除非我删除 hover 特定类 CODEPEN http codepen io bjackson2016
  • 如何在appengine中使用get_serving_url?

    以下是到目前为止我的 main py import cgi import datetime import logging from google appengine ext import db from google appengine a
  • 奇怪的 posix 消息队列链接问题 - 有时它无法正确链接

    当我构建以下代码时 它构建得很好 如果我更改代码以注释掉 while 使用相同的命令行 它不会构建 见下文 include