gcc 中“-l”选项的放置

2024-04-26

我在放置时遇到一些问题-l使用时的选项gcc。这是一个用于重现问题的精简版本。

t.c:

#include <pthread.h>

int main() {
    pthread_create(0, 0, 0, 0);
}

并在终端中:

$ gcc -lpthread t.c  
/tmp/ccmkwV7B.o: In function `main':  
t.c:(.text+0x29): undefined reference to `pthread_create'  
collect2: ld returned 1 exit status

$ gcc t.c -lpthread  
$ (compiles ok)

为什么我必须把-lpthread到底要使其发挥作用吗?而且这个问题似乎只出现在32位linux上。

我的环境信息附在下面:
gcc -lpthread t.c在这台机器上失败。

$ gcc --version  
gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1  

$ uname -rm  
3.0.0-12-generic i686

gcc -lpthread t.c在这台机器上工作。

$ uname -rm  
2.6.18-274.3.1.el5 x86_64  

$ gcc --version  
gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-51)  

我查阅了 gcc 手册,它说“-l 的位置很重要”。它到底是什么意思?


来自manual http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html,

在命令中编写此选项的位置会有所不同;链接器按照指定的顺序搜索和处理库和目标文件。因此,foo.o -lz bar.o搜索图书馆z文件后foo.o但之前bar.o. If bar.o指的是函数z,这些函数可能不会被加载。

这意味着链接库首先在 gcc 4.1.2 上工作是非常有趣的。这可能与编译器链接的默认库有关。我知道在某些安装中我不需要显式链接到 pthreads。

经过进一步思考,我认为问题出在旗帜上--as-needed,在您的 gcc 4.6 系统中可能默认打开。看到这个link http://www.gentoo.org/proj/en/qa/asneeded.xml进行一些讨论。

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

gcc 中“-l”选项的放置 的相关文章

  • 使用Linux虚拟鼠标驱动

    我正在尝试实施一个虚拟鼠标驱动程序根据基本 Linux 设备驱动程序书 有一个用户空间应用程序 它生成坐标以及内核模块 See 虚拟鼠标驱动程序和用户空间应用程序代码 http www embeddedlinux org cn Essent
  • 更改子进程中的 iostream

    现在 我正在开发一个项目 其中我需要启动一个子进程来使用 C 在 Linux 中执行一个新程序 并且我需要重定向标准输入和输出 就像在 C 中一样 它们是cin and cout 到一个文件 这意味着在子进程中 标准输入和输出都是文件 子进
  • 获取当前时间(以小时和分钟为单位)

    我正在尝试从系统收集信息 并且需要获取当前时间 以小时和分钟为单位 目前我有 date awk print 4 输出如下 16 18 54 怎样才能把秒数去掉呢 提供格式字符串 date H M Running man date将给出所有格
  • Kubernetes Pod 已终止 - 退出代码 137

    我需要一些关于 k8s 1 14 和在其上运行 gitlab 管道所面临的问题的建议 许多作业都会抛出退出代码 137 错误 我发现这意味着容器突然终止 集群信息 库伯内特版本 1 14 使用的云 AWS EKS 节点 C5 4xLarge
  • 为什么我的 Java 代码执行 bash 命令不正确?

    我试图让我的 Java 程序与 Linux bash 交互 但出了问题 我有一个简单的可执行文件prog从中读取一个整数stdin并输出其平方 执行中 echo 5 prog 从 bash 本身打印正确答案25 in stdout但运行 i
  • 在ubuntu 18.04上安装python 2.7

    有没有办法在 Ubuntu 18 04 上安装 Python 2 7 我尝试了这个命令 但它不起作用 sudo apt install python minimal 有没有办法手动安装 我尝试使用 python 2 7 作为不支持 pyth
  • gcc 内部使用相同的位表示 int 和 char 吗?

    我只是为了好玩而玩弄 unicode 字符 不使用 wchar t 支持 我只使用常规的 char 数据类型 我注意到 当以十六进制打印它们时 它们显示了完整的 4 个字节 而不是仅一个字节 对于前 考虑这个 c 文件 include
  • 在 Ubuntu 上运行独立的 ASP.NET Core 应用程序

    我已经发布了一个 ASP NET Core 应用程序作为针对 Ubuntu 的独立应用程序 发布似乎工作正常 我已将这些文件复制到一台漂亮的 Ubuntu 机器上 现在 我如何运行我的应用程序 我的理解是 因为它是一个独立的 NET Cor
  • 如何在汇编语言中换行打印多个字符串

    我试图在汇编中的不同行上打印多个字符串 但使用我的代码 它只打印最后一个字符串 我对汇编语言非常陌生 所以请耐心等待 section text global start start mov edx len mov edx len1 mov
  • 在 Linux 中使用仅限 CLI 的工具生成磁盘使用情况图/图表

    在这个问题中 https stackoverflow com questions 32230 tracking down where disk space has gone on linux有人询问如何在 Linux 中显示磁盘使用情况 我
  • Amazon EC2 - Apache 服务器重启问题

    当我运行这个命令时 sudo etc init d httpd restart 它给出以下错误 停止 httpd 失败 启动 httpd 98 地址已在使用中 make sock 无法绑定到地址 80 98 地址已在使用 make sock
  • 使用 Shell 脚本提供密码

    我已将客户端和服务器设置为无密码登录 就像无密码登录一样 通过将服务器的 RSA 密钥复制到所有客户端的 root ssh id rsa pub 来实现 但这是我手动完成的 我喜欢使用 shell 脚本自动执行此过程 并通过脚本向计算机提供
  • 安全地记住 bash 脚本中的 ssh 凭据[重复]

    这个问题在这里已经有答案了 假设我有一个 bash 脚本 它通过 ssh 在远程计算机上执行命令 Do something here ssh otheruser host command1 Do something else ssh oth
  • 什么是接口标识符

    我有一台笔记本电脑 使用一个或多个网络适配器连接到我组织的网络 我正在尝试编写一个工具来持续监控每个网络的连接状态和连接质量 然而 我的网络知识有限 术语让我感到困惑 特别是查找所有网络适配器 有人建议我使用命令ifconfig它给了我所谓
  • 套接字发送并发保证

    如果我在两个进程 或两个线程 之间共享一个套接字 并且在这两个进程中我尝试发送一条阻塞的大消息 大于下划线协议缓冲区 是否可以保证这两个消息将按顺序发送 或者消息可以在内核内部交错吗 我主要对 TCP over IP 行为感兴趣 但了解它是
  • 利用 SSE 和其他 CPU 扩展

    在我的代码库中有几个地方 对于大型数据集 相同的操作会重复很多次 在某些情况下 处理这些需要花费相当长的时间 我相信使用SSE来实现这些循环应该可以显着提高它们的性能 特别是在对同一组数据执行许多操作的情况下 因此一旦数据最初被读入缓存 就
  • Linux 的 gcc __attribute__((selectany)) 替代方案?

    我想知道是否有替代方案 attribute selectany 在Linux中 我想定义这样的东西 char a qwe zxc 并将其包含在许多链接在一起的 c 文件中 因此链接器将看到 a 的多个定义 因此不会链接 我读过这个属性 se
  • 从汇编程序获取命令行参数

    通读 专业汇编语言书籍 似乎它提供了用于读取命令行参数的错误代码 我纠正了一点 现在它从段错误变成了读取参数计数 然后是段错误 这是完整的代码 data output1 asciz There are d params n output2
  • C中的内存使用问题

    请帮忙 操作系统 Linux 其中 sleep 1000 中 此时 top 显示Linux任务 给我写了7 7 MEM使用 valgrind 未发现内存泄漏 我明白 写得正确 所有 malloc 结果都是 NULL 但是为什么这次 睡眠 我
  • 除了 iptables 之外还有数据包管理实用程序吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 Linux 实用程序 它可以根据一组规则更改网络数据包的有效负载 理想情况下 我会使用

随机推荐

  • 使用 Json.net 解析 JSON

    我正在尝试使用 JSon Net 库解析一些 JSON 该文档似乎有点稀疏 我对如何完成我需要的内容感到困惑 这是我需要解析的 JSON 格式 displayFieldName OBJECT NAME fieldAliases OBJECT
  • 在其他包中使用 main.go 中声明的结构

    我有一个结构体声明于main go如下所示 type Organization struct ID string json id Count int json count node count 我有一个名为configuration并有这样
  • 当鼠标悬停在图标上时,字形会改变颜色

    我怎样才能让它工作 这样当我将鼠标悬停在 li gt a 时 它也会改变我的字形图标上的颜色 我在下面列出了我的 html 和我的内容tryed在CSS中做 但这只会改变它if我将鼠标悬停在字形图标而不是 a 上 和yes我也尝试在我的 a
  • 如何使用 PDF.js 显示 PDF(以 Base64 存储)中的所有页面?

    我正在使用以下脚本使用 PDF js 显示 PDF 但它在画布上没有显示任何内容 你能告诉我我哪里出了问题吗 我尝试在线查找文档 但找不到任何帮助 Model B 是 base64 字符串
  • wpf xceed工具包水印文本框使水印显示直到第一次输入

    默认行为是当文本框获得焦点时水印消失 我想让水印内容仅在用户键入第一个字符时消失 然后在清除文本后重新出现 有人有好的方法来实现这一点吗 我已经为你调整了默认样式 现在 水印默认显示为 稍暗 默认系统 非活动文本 颜色 并且当水印接收焦点但
  • 使用 @Valid 进行 Spring 验证

    我正在验证传入属性 但验证器甚至捕获未注释的其他页面 Valid RequestMapping value showMatches spr method RequestMethod GET public ModelAndView showM
  • 如何从存储库中删除 Sonatype Nexus OSS(3) 组件

    这是我的第一个问题 我尽力做到最好 如果有什么问题 请简单地告诉我 我会纠正自己 我是 Sonatypes Nexus 3 OSS 的新手 我找不到从我的存储库中删除组件的方法 我的存储库中的一个包已变得无用 现在我想将其删除 我已经删除了
  • spring data neo4j 5 - 没有名为“sessionFactory”的bean可用

    我正在使用 spring data neo4j 5 0 7 RELEASE 和 spring 5 0 6 RELEASE 使用文档中的配置https github com spring projects spring data neo4j
  • 如何让 G1 打印更多日志详细信息?

    我正在测试基于 Jetty 的 API 与基于 Netty 的 API 实验中唯一的区别是我使用哪个 API 相同的应用程序 相同的服务器 相同的内存配置 相同的负载等 我使用基于 Netty 的 API 时会得到更长的 GC 暂停 大多数
  • React Native 上的 MQTT?

    将 MQTT 添加到我的反应原生项目时 我很难找到正确的方法 该项目需要在 iOS 和 Android 上运行 因此理想情况下 MQTT 可以在 javascript 端处理 我意识到移动节点和经典节点的网络巢穴是不同的 所以我开始沿着分叉
  • 自定义 Windows 7 登录 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我如何为 Windows 7 登录屏幕进行编程 不仅仅是替换背景图像 就像我希望它通过 RFID 阅读器进行身份验证一样 我能做到吗 我知道 XP 可
  • 经济模拟的算法?

    我想创建一个游戏 玩家可以创建不同价格的不同产品 称为报价 然后我给他们一定数量的客户 称为需求 现在 我想要一个算法来确定每个参与者的市场份额 当然 我现在就可以使用随机的方式来制作我的 但在这样做之前 我更愿意先问一下 因为我确信在我之
  • 我可以在css中指定maxlength吗?

    我可以用 CSS 中的某些内容替换 maxlength 属性吗
  • 如何根据文件名将文件移动到不同的目录?

    好的 我创建了一个程序 它将根据创建日期重命名目录中的文件 我现在需要能够根据创建日期将这些文件移动到不同的目录中 20131202 1 jpg 将进入名为 20131202 的文件夹 名为 20131203 2 jpg 的文件将进入名为
  • 如何在ios中获取今天日期的开始和结束时间? [复制]

    这个问题在这里已经有答案了 我使用此代码获取当前日期和时间 let today NSDate NSDate let dateFormatter NSDateFormatter NSDateFormatter dateFormatter ti
  • 多个网站,单点登录设计[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我有个问题 我最近一直在做一些工作的一个客户有一系列具有不同登录机制的网站 他正在寻求慢慢迁移到单点登录他的网站机制 全部写在asp net m
  • 使用 Nodejs 和 body-parser 发布表单数据

    我现在已经进行了几次不同的在线尝试 但我的帖子数据一直未定义 并且 console log JSON stringify req body 也没有返回任何内容 所以我在某个地方出错了 HTML
  • SSE、内在函数和对齐

    我使用大量 SSE 编译器内在函数编写了一个 3D 矢量类 一切都工作正常 直到我开始使用 new 来实例化具有 3D 向量作为成员的类 我在发布模式下经历了奇怪的崩溃 但在调试模式下却没有 反之亦然 因此 我阅读了一些文章 并认为我需要将
  • 使用 pip 安装 pycrypto 失败

    我在尝试下载某个包时遇到了问题 C Python27 Scripts gt pip install pycrypto Collecting pycrypto Using cached https files pythonhosted org
  • gcc 中“-l”选项的放置

    我在放置时遇到一些问题 l使用时的选项gcc 这是一个用于重现问题的精简版本 t c include