聊聊gcc引數中的 I L和 l

2021-09-10 09:47:03 字數 3571 閱讀 2005

在本文中, 我們來聊聊gcc中三個常見的引數, 也即-i, -l和-l

一. 先說 -i   (注意是大寫的i)

我們先來看簡單的程式:

main.c:

#include

#include

"add.h"

intmain

()

add.c:
int

add(int x, int y)

add.h:
int

add(int x, int y)

;"font-family: arial, helvetica, sans-serif; background-color: rgb(255, 255, 255);">

[taoge@localhost test]$ pwd/home/taoge/test[taoge@localhost test]$ lsadd.c  add.h  main.c[taoge@localhost test]$ gcc main.c add.c[taoge@localhost test]$ ./a.out sum is 3[taoge@localhost test]$
我們看到, 一切正常。 gcc會在程式當前目錄、/usr/include和/usr/local/include目錄下查詢add.**件, 剛好有, 所以ok.

我們進行如下操作後再編譯, 卻發現有誤, 不怕, 我們用-i就行了:

[taoge@localhost test]$ lsadd.c  add.h  a.out  main.c[taoge@localhost test]$ rm a.out; mkdir inc; mv add.h inc[taoge@localhost test]$ lsadd.c  inc  main.c[taoge@localhost test]$ gcc main.c add.cmain.c:2:17: error: add.h: no such file or directory[taoge@localhost test]$ [taoge@localhost test]$ [taoge@localhost test]$ [taoge@localhost test]$ gcc -i ./inc/ main.c add.c [taoge@localhost test]$ lsadd.c  a.out  inc  main.c[taoge@localhost test]$ ./a.out sum is 3[taoge@localhost test]$
上面把add.h移動到inc目錄下後, gcc就找不到add.h了, 所以報錯。 此時,要利用-i來顯式指定標頭檔案的所在地,  -i就是用來幹這個的:告訴gcc去**找標頭檔案。

二. 再來說-l(注意是大寫的l)

我們上面已經說了, -i是用來告訴gcc去**找標頭檔案的, 那麼-l實際上也很類似, 它是用來告訴gcc去**找庫檔案。 通常來講, gcc缺省會在程式當前目錄、/lib、/usr/lib和/usr/local/lib下找對應的庫。 -l的意思很明確了, 就不在贅述了。

三. 最後說說-l (注意是小寫的l)

我們之前討論過linux中的靜態庫和動態庫, -l的作用就是用來指定具體的靜態庫、動態庫是哪個。 

如何在linux下寫靜態鏈結庫並賣給別人?

如何在linux下寫動態鏈結庫並賣給別人?

ok, 都說完了, 希望對大家有所幫助。

睡覺。再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!

在本文中, 我們來聊聊gcc中三個常見的引數, 也即-i, -l和-l

一. 先說 -i   (注意是大寫的i)

我們先來看簡單的程式:

main.c:

#include

#include

"add.h"

intmain

()

add.c:
int

add(int x, int y)

add.h:
int

add(int x, int y)

;"font-family: arial, helvetica, sans-serif; background-color: rgb(255, 255, 255);">

[taoge@localhost test]$ pwd/home/taoge/test[taoge@localhost test]$ lsadd.c  add.h  main.c[taoge@localhost test]$ gcc main.c add.c[taoge@localhost test]$ ./a.out sum is 3[taoge@localhost test]$
我們看到, 一切正常。 gcc會在程式當前目錄、/usr/include和/usr/local/include目錄下查詢add.**件, 剛好有, 所以ok.

我們進行如下操作後再編譯, 卻發現有誤, 不怕, 我們用-i就行了:

[taoge@localhost test]$ lsadd.c  add.h  a.out  main.c[taoge@localhost test]$ rm a.out; mkdir inc; mv add.h inc[taoge@localhost test]$ lsadd.c  inc  main.c[taoge@localhost test]$ gcc main.c add.cmain.c:2:17: error: add.h: no such file or directory[taoge@localhost test]$ [taoge@localhost test]$ [taoge@localhost test]$ [taoge@localhost test]$ gcc -i ./inc/ main.c add.c [taoge@localhost test]$ lsadd.c  a.out  inc  main.c[taoge@localhost test]$ ./a.out sum is 3[taoge@localhost test]$
上面把add.h移動到inc目錄下後, gcc就找不到add.h了, 所以報錯。 此時,要利用-i來顯式指定標頭檔案的所在地,  -i就是用來幹這個的:告訴gcc去**找標頭檔案。

二. 再來說-l(注意是大寫的l)

我們上面已經說了, -i是用來告訴gcc去**找標頭檔案的, 那麼-l實際上也很類似, 它是用來告訴gcc去**找庫檔案。 通常來講, gcc缺省會在程式當前目錄、/lib、/usr/lib和/usr/local/lib下找對應的庫。 -l的意思很明確了, 就不在贅述了。

三. 最後說說-l (注意是小寫的l)

我們之前討論過linux中的靜態庫和動態庫, -l的作用就是用來指定具體的靜態庫、動態庫是哪個。 

如何在linux下寫靜態鏈結庫並賣給別人?

如何在linux下寫動態鏈結庫並賣給別人?

ok, 都說完了, 希望對大家有所幫助。

睡覺。

聊聊gcc引數中的 I, L和 l

在本文中,我們來聊聊gcc中三個常見的引數,也即 i,l和 l 一.先說 i 注意是大寫的i 我們先來看簡單的程式 main.c cpp view plain copy include include add.h int main add.c cpp view plain copy int add ...

聊聊gcc引數中的 I L和 l

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!在本文中,我們來聊聊gcc中三個常見的引數,也即 i,l和 l 一.先說 i 注意是大寫的i 我們先來看簡單的程式 main.c include include add.h intmain add.c int add int x,int y add...

聊聊gcc引數中的 I L和 l

在本文中,我們來聊聊gcc中三個常見的引數,也即 i,l和 l 一.先說 i 注意是大寫的i 我們先來看簡單的程式 main.c include include add.h intmain add.c int add int x,int y add.h int add int x,int y fon...