这些天我在玩线程库并尝试实现一些功能。 其中一个教程说要运行程序使用:
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/