-
當(dāng)前位置:首頁(yè) > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
gcc鏈接詳細(xì)參數(shù)(gcc 鏈接命令)
大家好!今天讓創(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去編譯連接一個(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)容。
推薦閱讀:
個(gè)體工商戶營(yíng)業(yè)執(zhí)照可以過戶嗎(個(gè)體戶更換經(jīng)營(yíng)者姓名)