HOME 首頁(yè)
SERVICE 服務(wù)產(chǎn)品
XINMEITI 新媒體代運(yùn)營(yíng)
CASE 服務(wù)案例
NEWS 熱點(diǎn)資訊
ABOUT 關(guān)于我們
CONTACT 聯(lián)系我們
創(chuàng)意嶺
讓品牌有溫度、有情感
專注品牌策劃15年

    gcc鏈接詳細(xì)參數(shù)(gcc 鏈接命令)

    發(fā)布時(shí)間:2023-04-13 23:40:04     稿源: 創(chuàng)意嶺    閱讀: 65        

    大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于gcc鏈接詳細(xì)參數(shù)的問題,以下是小編對(duì)此問題的歸納整理,讓我們一起來看看吧。

    開始之前先推薦一個(gè)非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對(duì)話答疑等等

    只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁(yè)版、PC客戶端

    官網(wǎng):https://ai.de1919.com。

    創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務(wù)客戶遍布全球各地,如需了解SEO相關(guān)業(yè)務(wù)請(qǐng)撥打電話175-8598-2043,或添加微信:1454722008

    本文目錄:

    gcc鏈接詳細(xì)參數(shù)(gcc 鏈接命令)

    一、怎么在命令行里用gcc去編譯連接一個(gè)程序?

    你的說法本身就有問題,gcc編譯的時(shí)候只能去鏈接 其他依賴文件和庫(kù)(靜態(tài)庫(kù)/動(dòng)態(tài)庫(kù))

    動(dòng)態(tài)庫(kù):.so結(jié)尾,在運(yùn)行時(shí)加載。

    靜態(tài)庫(kù):.a結(jié)尾,在編譯時(shí)加載。

    例如編譯hello.c 輸出hello可執(zhí)行文件

    鏈接靜態(tài)庫(kù):

    gcc hello.c -L /home/lib -static -l mylib -o hello

    -L參數(shù)可以向gcc的庫(kù)文件搜索路徑中添加新目錄

    -static選項(xiàng)強(qiáng)制使用靜態(tài)鏈接庫(kù)

    -l mylib -l后面是要靜態(tài)連接的庫(kù)(libhellos.a)

    鏈接動(dòng)態(tài)庫(kù):

    gcc -o hello hello.c -L. -lhello

    -L后面的點(diǎn)為當(dāng)前目錄

    -lhello 是去鏈接libhello.so

    二、GCC編譯器的參數(shù)與空格

    按照INSTALL中的介紹,也是常用的方法,在configure的時(shí)候,加上–host=arm-linux,結(jié)果沒有實(shí)現(xiàn)我們要的效果,沒有將編譯器從默認(rèn)的

    gcc改成arm-linux-gcc,編譯器還是用的默認(rèn)的gcc:

    [crifan@localhost

    lrzsz-0.12.20]$

    CFLAGS=-O2

    ./configure

    –host=arm-linux

    loading

    cache

    ./config.cache

    ………………..

    checking

    for

    gcc…

    (cached)

    gcc

    checking

    whether

    the

    C

    compiler

    (gcc

    -O2

    )

    works…

    yes

    checking

    whether

    the

    C

    compiler

    (gcc

    -O2

    )

    is

    a

    cross-compiler…

    no

    ………………..

    后來經(jīng)過多次嘗試,最后受默認(rèn)的

    CFLAGS=-O2

    ./configure

    進(jìn)行配置所啟發(fā),想到,是否可以將CC參數(shù)傳入到configure中,

    結(jié)果證實(shí),如果沒有自己的cache-file,即時(shí)加了對(duì)的CC參數(shù),也還是無法傳入:

    [crifan@localhost

    lrzsz-0.12.20]$

    CFLAGS=-O2

    CC=arm-linux-gcc

    ./configure

    –host=arm-linux

    loading

    cache

    ./config.cache

    ………………..

    checking

    for

    gcc…

    (cached)

    gcc

    checking

    whether

    the

    C

    compiler

    (gcc

    -O2

    )

    works…

    yes

    checking

    whether

    the

    C

    compiler

    (gcc

    -O2

    )

    is

    a

    cross-compiler…

    no

    checking

    whether

    we

    are

    using

    GNU

    C…

    (cached)

    yes

    ………………..

    而且,如果CC參數(shù)放在configure后面:

    ./configure

    CC=arm-linux-gcc

    則不能識(shí)別:

    [crifan@localhost

    lrzsz-0.12.20]$

    CFLAGS=-O2

    ./configure

    CC=arm-linux-gcc

    configure:

    warning:

    CC=arm-linux-gcc:

    invalid

    host

    type

    ………………..

    參數(shù)傳遞必須像

    CFLAGS=-O2

    ./configure

    一樣,將參數(shù)設(shè)置放在configure的前面:

    CC=arm-linux-gcc./configure

    才能識(shí)別的。

    必須要自己制定自己的cache-file

    然后用./configure進(jìn)行新配置,加上CC參數(shù),才會(huì)即時(shí)生效,編譯器才可以變成我們要的arm-linux-gcc:

    [crifan@localhost

    lrzsz-0.12.20]$

    CC=arm-linux-gcc

    ./configure

    –cache-file=cache_file_0

    –prefix=/usr/crifan/lrzsz

    ………………..

    checking

    for

    gcc…

    arm-linux-gcc

    checking

    whether

    the

    C

    compiler

    (arm-linux-gcc

    )

    works…

    yes

    checking

    whether

    the

    C

    compiler

    (arm-linux-gcc

    )

    is

    a

    cross-compiler…

    yes

    checking

    whether

    we

    are

    using

    GNU

    C…

    yes

    ………………..

    否則,就無法將我們的CC參數(shù)傳入了:

    [crifan@localhost

    lrzsz-0.12.20]$

    CC=arm-linux-gcc

    ./configure

    –prefix=/usr/crifan/lrzsz

    ………………..

    checking

    for

    gcc…

    (cached)

    gcc

    checking

    whether

    the

    C

    compiler

    (gcc

    )

    works…

    yes

    checking

    whether

    the

    C

    compiler

    (gcc

    )

    is

    a

    cross-compiler…

    no

    checking

    whether

    we

    are

    using

    GNU

    C…

    (cached)

    yes

    ………………..

    [crifan@localhost

    lrzsz-0.12.20]$

    CFLAGS=-O2

    CC=arm-linux-gcc

    ./configure

    –cache-file=cache_file_0

    loading

    cache

    cache_file_0

    ………………..

    checking

    for

    gcc…

    arm-linux-gcc

    checking

    whether

    the

    C

    compiler

    (arm-linux-gcc

    -O2

    )

    works…

    yes

    checking

    whether

    the

    C

    compiler

    (arm-linux-gcc

    -O2

    )

    is

    a

    cross-compiler…

    yes

    checking

    whether

    we

    are

    using

    GNU

    C…

    yes

    最好此處在加上–prefix=/usr/crifan/lrzsz,表示具體安裝到哪里

    [crifan@localhost

    lrzsz-0.12.20]$

    CFLAGS=-O2

    CC=arm-linux-gcc

    ./configure

    –cache-file=cache_file_0

    –prefix=/usr/crifan/lrzsz

    loading

    cache

    cache_file_0

    ………………..

    checking

    for

    gcc…

    arm-linux-gcc

    checking

    whether

    the

    C

    compiler

    (arm-linux-gcc

    -O2

    )

    works…

    yes

    checking

    whether

    the

    C

    compiler

    (arm-linux-gcc

    -O2

    )

    is

    a

    cross-compiler…

    yes

    checking

    whether

    we

    are

    using

    GNU

    C…

    yes

    ………………..

    其中,/usr/crifan/lrzsz是已經(jīng)建立好的,已經(jīng)存在的文件夾,上面這樣表示編譯后,

    將生成的可執(zhí)行文件安裝拷貝到那個(gè)目錄.

    三、LINUX下的GCC詳細(xì)教程,帶圖片的

    //FileName : hello.c

    #include <stdio.h>

    int main()

    {

    const char * str = "Hello World!";

    return 0;

    }

    標(biāo)準(zhǔn)用法:

    gcc -c hello.c

    ls查看 生成了 hello.c hello.o

    gcc -o hello.o

    ls查看 多了 a.out

    執(zhí)行: ./a.out

    Hello World

    常用的用法:

    gcc -o hello hello.c

    這樣就直接編譯鏈接生成可執(zhí)行文件hello

    ./hello

    Hello World

    不推薦的用法:

    gcc hello.c

    直接生成a.out

    ./a.out

    Hello World

    GCC的命令參數(shù)有一百多條,常用的還有-Wall參數(shù) 用于顯示忽略的警告

    -pthread 多線程編譯 。。。。。。

    可以在命令行下使用 man gcc 查看gcc詳細(xì)的參數(shù)和說明文檔

    四、R 包安裝的時(shí)候,怎么指定gcc的參數(shù)

    Mac中的開發(fā)工具鏈都是圍繞xcode的,但是對(duì)于只想使用gcc,g++編譯c/c++代碼的情況,裝一個(gè)xcode實(shí)在沒有必要。更新:4.3版本的xcode已經(jīng)將圖形開發(fā)界面和命令行工具分開了發(fā)布了。還有即使裝了xcode,默認(rèn)帶的gcc編譯器都是lvmm做前端的,并非純正的gnugcc。如果你想用純正的gcc,最好的法就是自己手動(dòng)編譯一個(gè)。主要有以下方法:1.通過port安裝這種方法比較簡(jiǎn)單,前提是mac上已經(jīng)安裝port了,具體命令:安裝最新的gcc48:sudoportinstallgcc48默認(rèn)的安裝目錄是:/opt/local/bin/2.通過homebrew安裝這種方法比較簡(jiǎn)單,前提是mac上已經(jīng)安裝homebrew了,具體命令:brewtaphomebrew/versionsbrewinstall[flags]gcc49其中[flags]一些需要支持的語(yǔ)言的桉樹,例如–enable-cxx–enable-fortran3.Github參考mentforcleanup…#cd../../..#rm-rtemp-gcc完成后,將在/usr/gcc-4.8.0安裝gcc,然后可以創(chuàng)建gcc的軟鏈接或者將bin路徑加入到$PAHT變量中

    以上就是關(guān)于gcc鏈接詳細(xì)參數(shù)相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。


    推薦閱讀:

    bingchatGPT中文版(bongo下載)

    aigc和gpt的區(qū)別(gpt 和)

    正宗的aigc概念股(ai概念股票)

    找索引擎seo(搜索引擎seo)

    個(gè)體工商戶營(yíng)業(yè)執(zhí)照可以過戶嗎(個(gè)體戶更換經(jīng)營(yíng)者姓名)