-
當前位置:首頁 > 創(chuàng)意學院 > 技術 > 專題列表 > 正文
gcc鏈接詳細參數(shù)(gcc 鏈接命令)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關于gcc鏈接詳細參數(shù)的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等
只需要輸入關鍵詞,就能返回你想要的內容,越精準,寫出的就越詳細,有微信小程序端、在線網(wǎng)頁版、PC客戶端
官網(wǎng):https://ai.de1919.com。
創(chuàng)意嶺作為行業(yè)內優(yōu)秀的企業(yè),服務客戶遍布全球各地,如需了解SEO相關業(yè)務請撥打電話175-8598-2043,或添加微信:1454722008
本文目錄:
一、怎么在命令行里用gcc去編譯連接一個程序?
你的說法本身就有問題,gcc編譯的時候只能去鏈接 其他依賴文件和庫(靜態(tài)庫/動態(tài)庫)
動態(tài)庫:.so結尾,在運行時加載。
靜態(tài)庫:.a結尾,在編譯時加載。
例如編譯hello.c 輸出hello可執(zhí)行文件
鏈接靜態(tài)庫:
gcc hello.c -L /home/lib -static -l mylib -o hello
-L參數(shù)可以向gcc的庫文件搜索路徑中添加新目錄
-static選項強制使用靜態(tài)鏈接庫
-l mylib -l后面是要靜態(tài)連接的庫(libhellos.a)
鏈接動態(tài)庫:
gcc -o hello hello.c -L. -lhello
-L后面的點為當前目錄
-lhello 是去鏈接libhello.so
二、GCC編譯器的參數(shù)與空格
按照INSTALL中的介紹,也是常用的方法,在configure的時候,加上–host=arm-linux,結果沒有實現(xiàn)我們要的效果,沒有將編譯器從默認的
gcc改成arm-linux-gcc,編譯器還是用的默認的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)過多次嘗試,最后受默認的
CFLAGS=-O2
./configure
進行配置所啟發(fā),想到,是否可以將CC參數(shù)傳入到configure中,
結果證實,如果沒有自己的cache-file,即時加了對的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
則不能識別:
[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ù)設置放在configure的前面:
CC=arm-linux-gcc./configure
才能識別的。
必須要自己制定自己的cache-file
然后用./configure進行新配置,加上CC參數(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í)行文件安裝拷貝到那個目錄.
三、LINUX下的GCC詳細教程,帶圖片的
//FileName : hello.c
#include <stdio.h>
int main()
{
const char * str = "Hello World!";
return 0;
}
標準用法:
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詳細的參數(shù)和說明文檔
四、R 包安裝的時候,怎么指定gcc的參數(shù)
Mac中的開發(fā)工具鏈都是圍繞xcode的,但是對于只想使用gcc,g++編譯c/c++代碼的情況,裝一個xcode實在沒有必要。更新:4.3版本的xcode已經(jīng)將圖形開發(fā)界面和命令行工具分開了發(fā)布了。還有即使裝了xcode,默認帶的gcc編譯器都是lvmm做前端的,并非純正的gnugcc。如果你想用純正的gcc,最好的法就是自己手動編譯一個。主要有以下方法:1.通過port安裝這種方法比較簡單,前提是mac上已經(jīng)安裝port了,具體命令:安裝最新的gcc48:sudoportinstallgcc48默認的安裝目錄是:/opt/local/bin/2.通過homebrew安裝這種方法比較簡單,前提是mac上已經(jīng)安裝homebrew了,具體命令:brewtaphomebrew/versionsbrewinstall[flags]gcc49其中[flags]一些需要支持的語言的桉樹,例如–enable-cxx–enable-fortran3.Github參考mentforcleanup…#cd../../..#rm-rtemp-gcc完成后,將在/usr/gcc-4.8.0安裝gcc,然后可以創(chuàng)建gcc的軟鏈接或者將bin路徑加入到$PAHT變量中
以上就是關于gcc鏈接詳細參數(shù)相關問題的回答。希望能幫到你,如有更多相關問題,您也可以聯(lián)系我們的客服進行咨詢,客服也會為您講解更多精彩的知識和內容。
推薦閱讀:
個體工商戶營業(yè)執(zhí)照可以過戶嗎(個體戶更換經(jīng)營者姓名)