1:編譯器編譯的時候,預設到**找標頭檔案,如果不在怎麼指定編譯器到**找標頭檔案?
(1):如果標頭檔案用<>引用,則預設到/usr/include或/usr/local/include下找,交叉編譯器則在對應的路徑的子目錄usr/include下找
(2):如果標頭檔案用""引用,則先到當前目錄下找標頭檔案,如果沒找到,則還是到/usr/include或/usr/local/include下找,交叉編譯器還是在對應的路徑的子目錄usr/include下找
(3):如果標頭檔案不在預設的路徑下,則在編譯時,用-i指定標頭檔案的路徑(不需要具體到頭檔名)。
2:鏈結器在做連線的時候,預設到**找動態庫,如果不在怎麼指定鏈結器到**找庫檔案?
聯結器預設到/lib,/usr/lib,/usr/local/lib下找動態庫,如果不在預設路徑,則可在編譯時用-l指定鏈結庫的路徑,並且用-l指定要鏈結的庫名(如果動態庫為libssl.so,則庫名為ssl,不是動態庫的名字)。
3:鏈結器如果找不到某個函式或變數的定義,該怎麼指定鏈結器要鏈結哪個庫檔案?
如果程式依賴的某動態庫不在預設路徑下,則可通過環境變數ld_library_path指定(新增)乙個庫檔案的路徑,可export ld_library_path=庫檔案路徑:$ld_library_path(冒號為分隔符,$表示取ld_library_path之前的值)。
編譯器處理相關
一.預處理器 編譯器 彙編器 鏈結器 預處理器會處理相關的預處理指令,一般是以 開頭的指令。如 include xx.h define等。編譯器把對應的 cpp翻譯成 s檔案 組合語言 彙編器則處理 s生成對應的 o檔案 obj目標檔案 最後鏈結器把所有的 o檔案鏈結成乙個可執行檔案 exe 1.部...
UNIX LINIUX編譯器相關
標準 unix程式設計環境和c程式語言標準化.標準化有多種,例如iso c制定的.unix標準不同,同它相關的或者能夠支援的標準c庫也不完全相同.例如關鍵字,標頭檔案 及其相關的功能 系統介面 標頭檔案及定義,實用程式等等,有些標準有,有些沒有.unix標準有多種,實現也有多種.iso c的標頭檔案...
ARM編譯器相關
當前的arm 編譯器在2016年就開始使用arm compiler 6。即將armcc改為armclang。compiler 6之前 dui0471 m embedded software development compiler 6 100748 0614 preface 實際工程工具鏈替代的沒有...