0

をリンクする単純なプログラムを作成するとpthread、奇妙な問題が発生しました。

ソースファイルの前にパラメータを置く-lpthreadと、ビルドに失敗して戻ります

ld は 1 つの終了ステータスを返しました

しかし、-lpthread最後にパラメータを書き込むと、プログラムのビルドに成功します。

初心者で画像アップ出来なくてすみません。次に、2 つのバージョン コマンドを示します。

失敗しました:gcc **-lpthread** maintest.cpp

成功しました:gcc maintest.cpp **-lpthead**

以前、Ubuntu 11.04 で同じ問題に遭遇しましたが、Ubuntu 10.10 では問題を再現できませんでした。

これが新しい Ubuntu のバグなのか、それとも Makefile を正規化するための単なる制約なのかはわかりません。

4

1 に答える 1

0

これは確かに興味深いです。

私は Linux Mint 12 を使用していますが、どちらも機能しているようです。

cpp ではなく .c ファイルで試してみましたか? それをして結果を投稿できますか?(これで違いはないと確信していますが、確認したいだけです!)

100% 確信があるわけではありませんが、Linux では、適切なコンパイラでコンパイルされるファイルに正しい拡張子を付ける必要がないため、makefile を正規化するための制約にはならないことはかなり確信しています。(それが、私が上記の声明に非常に確信している理由です)。使用されているコンパイラ。したがって、論理的には、pthread がコンパイラによってロードされるだけで (ライブラリがリンクされる)、ソースのコンパイルにジャンプできることを考えると、それを制約することは意味がありません。私が間違っていない場合(私が間違っている場合は誰かを修正してください!)、コマンドのどこかに配置されているフラグがソースファイルをコンパイルする前にライブラリをロード/リンクするため、本質的に違いはありません。

したがって、私の賭けはバグにありますが、私をバックアップするソースがありません。それはまさに論理的解釈が言うことです!(間違っていたら訂正してください..もう一度!)

于 2012-06-27T09:50:26.203 に答える