[英]Demystifying gcc under lpthreads
在這些日子里,我正在玩線程庫並試圖實現一些功能。 其中一個教程說要運行程序使用:
gcc -lpthread -lrt -lc -lm project1.c scheduler.c -o out
首先,我需要深入了解gcc在每一行中所做的事情,
lpthread用於什么? lrt -lc -lm的貢獻是什么?
project1.c和scheduler.c是一起編譯的,所以我應該理解什么? 我檢查了
代碼和其中任何一個都沒有包含在project1.c或scheduler.c中。
其次,作者聲明要運行你必須使用的程序
./out number filename (For example, ./out 2 sample.txt)
為了使這些清楚,我理解主函數獲取數字和sample.txt作為輸入。(?)
謝謝你的回答並讓我清楚。
-lxxx
表示鏈接名為libxxx
的庫,因此您告訴它鏈接libpthread
, librt
, libc
和libm
。
您似乎不太可能需要指定鏈接libc - 這通常是默認情況下發生的。 libm是數學庫,因此對於大多數執行浮點運算的代碼都需要它。 libpthread包含pthreads函數(例如,pthread_create),因此創建/使用pthreads的任何代碼都需要鏈接到它。
project1.c和scheduler.c一起編譯意味着一個中的代碼可以調用另一個中的函數。
您對命令行參數的理解似乎是正確的。
作為輸出顯然它給出了“出去”
是的你用-o out
指定了這個
gcc不僅將.c
文件編譯為.o
文件,還將編譯后的文件和使用-l
指定的庫鏈接到二進制文件。
./out number filename (For example, ./out 2 sample.txt)
數字和文件名是程序的兩個參數,名稱為out。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.