c - 为什么有些系统库需要 -l 选项,而另一些则不需要?

标签 c compilation

我最近上了一门使用 pthreads 的类(class),在编译时我们被告知添加 -lpthread 。但是使用其他#include <>时怎么会这样呢?系统头文件的语句,似乎对象实现代码的链接是自动发生的?例如,如果我只想获取头文件#include <stdio.h> ,我不需要 -l编译中的选项,.o 的链接实现文件文件就这样发生了。

最佳答案

对于这个文件

#include <stdio.h>

int main() {
  return 0;
}

运行

gcc -v -o simple simple.c

您将看到 gcc 实际上做了什么。你会看到它在你背后与图书馆链接。这就是为什么您不明确指定系统库的原因。

关于c - 为什么有些系统库需要 -l 选项,而另一些则不需要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51866433/

相关文章:

c - 从 C 函数返回指针是好的/坏的设计?

java - Maven : Deploy Local Project to Remote Server with dependencies

qt - 在Qt Creator中自动重建依赖关系

C++ 'ClassName Not Declared' 错误

c - 什么决定最大本地数据报大小? (PF_UNIX/SOCK_DGRAM)

检查套接字编程中的地址族

c - 在 Mac OS X Lion 上获取 C 中的堆栈指针

c - 如何在c中使用mmap()函数

c++ - 这是编译器编译的顺序

c# - WPF-错误 : [xxx] "does not contain a definition for [zzz] and no extension method [zzz] could be found