[英]Makefile with pthread won't compile properly with multiple versions
對於一個項目,我必須為源代碼創建一個簡單的makefile,其中包括pthreads和命令行參數(如果要包括在內)。
無效的makefile的第一個版本是這樣的:
mr: mr.o
g++ -std=c++11 -pthread mr.o -o mr
mr.o: mapred.cc
g++ -std=c++11 -pthread -c mapred.cc
clean:
rm *.o mr
因此,我決定翻轉一下前兩個語句:
mr.o: mapred.cc
g++ -std=c++11 -pthread -c mapred.cc
mr: mr.o
g++ -std=c++11 -pthread mr.o -o mr
clean:
rm *.o mr
它可以編譯嗎? 我在終端中得到的是:
g++ -std=c++11 -pthread -c mapred.cc
沒別的。 當我查看創建了哪些文件時,我看到的只是創建了一個新文件mapred.o
,但沒有可執行文件。 因此沒有錯誤,但沒有完全完成。 如果你們有任何幫助我的提示,將不勝感激。 謝謝!
如果未使用-o
選項指定顯式的輸出名稱,則編譯器將命名與源文件相同的目標文件,但后綴為.o
。
在您的情況下,命令
g++ -std=c++11 -pthread -c mapred.cc
將創建一個名為mapread.o
的對象文件。
將mapread.o
用作目標名稱以及進行鏈接時,或者使用-o
選項:
g++ -std=c++11 -pthread -c mapred.cc -o mr.o
至於第二個問題,除非在調用make
時指定了顯式目標,否則它將僅使用第一個目標,而不會使用其他任何目標。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.