当我构建一个链接pthread
的简单程序时,我遇到了一个奇怪的问题:
将-lpthread
参数放在源文件之前时,无法构建并返回
ld返回1退出状态
但是,当我最后编写-lpthread
参数时,它成功构建了程序。
我是新手,抱歉我无法上传图片。以下是两个版本命令:
失败:gcc **-lpthread** maintest.cpp
成功:gcc maintest.cpp **-lpthead**
之前我在Ubuntu 11.04中遇到过同样的问题,但是我无法在Ubuntu 10.10中重现这个问题。
我不确定这是新版Ubuntu中的错误还是仅限制规范化Makefile?
答案 0 :(得分:0)
这当然很有趣。
我在Linux Mint 12上,他们似乎都在为我工作。
您是否使用.c文件尝试而不是使用cpp?你能这样做并发布你的结果吗? (我很确定这没有什么区别,但只是想检查一下!)
我不是100%肯定,但我非常肯定它不能成为规范化makefile的约束因为在linux中,你不需要为正确编译的文件编译正确的扩展名。 (这就是我对上述陈述非常肯定的原因)。正在使用的编译器。从逻辑上讲,限制它是没有任何意义的,因为pthread只是由编译器加载(库将被链接),然后它可以跳转到编译源。如果我没有错(如果我是,请纠正我的人!),那么基本上它不会有所作为,因为标志位于命令的任何位置,将在编译源文件之前加载/链接库。
所以我的赌注是关于这个bug,但我没有消息来支持我。这正是逻辑解释所说的! (纠正我,如果我错了......再说!)