【发布时间】:2017-01-04 18:01:55
【问题描述】:
我最近一直在尝试将 MinGW 用于我的开发目的,但出现了一些问题。
出于某种原因,它似乎总是想与 pthread 链接。 我尝试在 C 中编译一个简单的 hello world 并得到类似的错误
ld.exe: 找不到 -lpthread
显然它正在搜索 pthread 库,但没有找到它。我从 MinGW-get 下载了库,正如预期的那样,编译和链接工作正常。
然而,在 C 语言中为一个简单的 hello world 剥离可执行文件(仅包含 stdio.h)后,该文件仍然是 46k 大。 在 Cygwin 上用 gcc 编译剥离的同一个文件是 9k 的,MSVC 也是类似的。
所以它抱怨缺少图书馆。 提供库解决了问题并使其正常工作。 但是在 C 中剥离的 hello world 仍然是 46k,而在 cygwin 上使用 gcc 是 9k。
很自然地得出结论,MinGW 出于某种原因正在使用 pthread 库。
但我无法找到一种方法来禁用想要在任何地方与 pthread 链接的 MinGW。具有讽刺意味的是,我在谷歌上发现的所有内容都是人们无法让 pthread 与 MinGW 一起工作。
有什么办法让MinGW不想和pthread链接?
【问题讨论】:
-
您如何构建您的应用程序?和
gcc hello.c一样吗? -
@KirillDaybov 是的,我只运行
gcc hello.c然后strip a.exe。我觉得奇怪的是,当我在没有任何参数的情况下调用 pthread 库时,它却在抱怨它,而且它也是一个全新的安装。 -
看起来 mingw 没有 pthread 就无法工作。我发现another question 有同样的问题。他认为这是一个安装问题。
-
它适用于我使用 MinGW-w64。
-
无法复制 - 获取 mingw 的新副本,编译/剥离
hello.c。它没有链接到任何东西,只是kernel32和msvcrt。
标签: c windows pthreads mingw ld