0

当我构建一个简单的程序链接pthread时,我遇到了一个奇怪的问题:

-lpthread参数放在源文件之前,构建失败并返回

ld 返回 1 个退出状态

-lpthread但是,当我最后编写参数时,它成功构建了程序。

我是新手,很抱歉我不能上传图片。以下是两个版本命令:

失败gcc **-lpthread** maintest.cpp

成功gcc maintest.cpp **-lpthead**

我之前在 Ubuntu 11.04 中遇到过同样的问题,但在 Ubuntu 10.10 中我无法重现该问题。

我不确定这是否是较新的 Ubuntu 中的错误,或者只是对 Makefile 进行规范化的限制?

4

1 回答 1

0

这当然很有趣。

我在 Linux Mint 12 上,它们似乎都在为我工作。

您是否使用 .c 文件而不是 cpp 进行了尝试?你能做到这一点并发布你的结果吗?(我很确定这没有什么区别,但只是想检查一下!)

我不是 100% 肯定,但我非常肯定它不能成为规范化 makefile 的约束,因为在 linux 中,您不需要具有正确的扩展名来使用正确的编译器编译文件。(这就是为什么我很确定上述说法的原因)。正在使用的编译器。所以从逻辑上讲,限制它没有任何意义,因为 pthread 只会由编译器加载(库将被链接),然后它可以跳转到编译源代码。如果我没有错(纠正我的人,如果我错了!),那么基本上它不会有什么不同,因为位于命令中任何位置的标志会在编译源文件之前加载/链接库。

所以我的赌注是这个错误,但我没有来源支持我。这正是逻辑解释所说的!(如果我错了,请纠正我......再次!)

于 2012-06-27T09:50:26.203 回答