2016-06-28 53 views
1

我爲我的C程序創建了一個庫,其中包含線程。我通常使用Code :: Blocks,並且從來沒有遇到過問題,但現在我需要直接從終端編譯程序。我看到我需要寫-lpthread,但也需要我的庫名(它的名字是my_lib.h)。我試圖首先編譯gcc my_lib.c -c這個庫,這個工程;之後,我嘗試了這個gcc main.c my_lib.h -o main -lpthread,但這不起作用。如何使用包含線程的個人庫編譯C程序

那麼編譯這個使用my_lib.h的程序的正確sintax是什麼?

+1

切勿將.h文件作爲參數傳遞給編譯器。 「不起作用」是無用的陳述。你的電腦爆炸了,還是變成了馬鈴薯?這是兩種截然不同的失敗模式。 –

+0

第二步稱爲鏈接,它期望my_lib.o而不是my_lib.h –

回答

2

我認爲my_lib.c只是一個模塊(目標文件)而不是共享庫。

的編制由兩個部分組成 - 編譯成目標文件,然後鏈接:

# compiling (note the -c) 
gcc -c my_lib.c 
gcc -c main.c 
# linking (no -c, just specify target with -o) 
gcc -o main main.o my_lib.o -lpthread 

頭文件從不編譯(明確的),他們只是從.c文件包含,因此從來沒有產生.o文件。

+0

它的工作原理!謝謝! – salvo9415