c++ - 揭秘 lpthreads 下的 gcc

标签 c++ c gcc

这些天我在玩线程库并尝试实现一些功能。 其中一个教程说要运行程序使用:

gcc -lpthread -lrt -lc -lm project1.c scheduler.c -o out

首先我需要深入了解 gcc 在每一行中做了什么,

  • lpthread有什么用? lrt -lc -lm 的贡献是什么?

  • project1.c 和 scheduler.c 是一起编译的,我应该怎么理解?我检查了
    代码和任何未包含在 project1.c 或 scheduler.c 中的代码。

  • 作为输出,它给出了“out”。

其次,作者声明要运行您必须使用的程序

./out number filename (For example, ./out 2 sample.txt)

据我所知,为了使这些清楚,主要功能获取数字和 sample.txt 作为输入。(?)

感谢您的回答,让我明白了。

最佳答案

-l 参数表示 - 链接到特定库。参见 GCC manual了解更多信息

因此 -lpthread 表示链接到 libpthread.so(或 pthread.a) -lm -lrt, -lc

同样

[lib]pthread[.so] - POSIX threads

[lib]m[.so] - 数学标准库(sin、cos 等)

[lib]rt[.so] - POSIX realtime extensions

[lib]c[.so] - libc(标准 C 库)

您的每个 .c 文件都被编译为 .o 目标文件(这些称为编译单元)并与上面提到的库。

关于应该如何传递命令行参数,您是正确的。

关于c++ - 揭秘 lpthreads 下的 gcc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2861366/

相关文章:

c - setsockopt 返回 errno=2

c - gcc中使用的C版本是多少

gcc - 内联汇编寻址方式

c++ - 不同的可变参数模板扩展

c++ - 如何从 llvm 命令行帮助字符串中隐藏特定的枚举值?

c++ - 如何使用迭代而不是递归将值输入到链表中?

c++ - BS-42e6.gcno文件调试

c - 如何在库代码中分配和维护内存?

c - C 新手,在多个函数中使用用户输入

c++ - Arm GNU 编译器 : Assembly generated from ternary optimized by superfluous cast