導航:首頁 > 源碼編譯 > gcc編譯參數

gcc編譯參數

發布時間:2022-02-07 23:56:29

⑴ 如何利用gcc編譯選項檢測函數參數個數

gcc的一個編譯選項:-fstack-protector,以下是關於這個選項的描述: -fstack-protector 啟用該選項後編譯器會產生額外的代碼來檢測緩沖區溢出,例如棧溢出攻擊。這是通過在有缺陷的函數中添加一個保護變數來實現的。這包括會調用到alloca的函數.

⑵ GCC編譯器的參數與空格

按照INSTALL中的介紹,也是常用的方法,在configure的時候,加上–host=arm-linux,結果沒有實現我們要的效果,沒有將編譯器從默認的
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
………………..
後來經過多次嘗試,最後受默認的
CFLAGS=-O2
./configure
進行配置所啟發,想到,是否可以將CC參數傳入到configure中,
結果證實,如果沒有自己的cache-file,即時加了對的CC參數,也還是無法傳入:
[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參數放在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
………………..
參數傳遞必須像
CFLAGS=-O2
./configure
一樣,將參數設置放在configure的前面:
CC=arm-linux-gcc./configure
才能識別的。
必須要自己制定自己的cache-file
然後用./configure進行新配置,加上CC參數,才會即時生效,編譯器才可以變成我們要的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參數傳入了:
[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是已經建立好的,已經存在的文件夾,上面這樣表示編譯後,
將生成的可執行文件安裝拷貝到那個目錄.

⑶ C寫windows程序用gcc編譯生成時,命令行加參數-lgdi32,在程序中寫什麼代碼去掉參數

編譯方法:格式 gcc [option] [sourcefilename]常用的選項最簡單的是:gcc hello.c默認的情況下將生成a.out的可執行性文件,


只需要在終端上輸入./a.out就可以看到執行的結果,如果你想指定生成目標文件的名字那麼你可以加上 -o選項,命令如下:gcc -o hello hello.c


命令:gcc -c hello hello.c

⑷ Linux gcc 編譯參數問題

-l 使用庫。
這個庫的名字是 pthread 。

POSIX 線程是:線程的 POSIX標准,定義了創建和操縱線程的一套 API。
實現 POSIX 線程標準的庫常被稱作 Pthreads,一般用於 Unix-like POSIX 系統,如 Linux、 Solaris,但是 Microsoft Windows上的實現也存在,例如, pthreads-w32可以用於支持 Pthread API M的子集 [1]。

以上部分文字出自維基網路,故本回答的文字基於GNU自由文檔許可證之條款下發布。
另外抗議網路知道封殺維基網路的連接。

⑸ cmd調用gcc編譯c源碼,並傳參

下面將通過對一個程序的編譯來演示整個過程。

1
2
3
4
5
6
7

#include <stdio.h>

int main()
{
printf("happy new year!\n");
return 0;
}


1:預處理:編譯器將C程序的頭文件編譯進來,還有宏的替換,可以用gcc的參數-E來參看。
命令:gcc -E hello.c -o hello.i
作用:將hello.c預處理輸出hello.i
2:編譯:這個階段編譯器主要做詞法分析、語法分析、語義分析等,在檢查無錯誤後後,把代碼翻譯成匯編語言。可用gcc的參數-S來參看。
編譯器(ccl)將文本文件hello.i 翻譯成文本文件hello.s, 它包含一個匯編語言程序。匯編語言程序中的每條語句都以一種標準的文本格式描述了
一條低級機器語言指令。

⑹ gcc編譯時的-g參數是什麼意思

生成調試信息。GNU 調試器可利用該信息。

⑺ linux下GCC編譯器,怎麼在main後面的參數中寫入數字來傳入數據。 比如實現 Calc + 22 22 輸出 44 。

[root@liuxiting .test~]# cat test.c
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int a, b;
char c;
if ( argc < 3)
printf("wrong parameter \n");
else
{
a = atoi(argv[2]);
b = atoi(argv[3]);
c = *argv[1];
if ( c == '+')
{
printf("%d ", a);
printf("%c", c);//*argv[1]);
printf("%d = ",b);
printf("%d\n",a+b);
}
}
}
[root@liuxiting .test~]#gcc test.c
[root@liuxiting .test~]# ./a.out + 22 33
22 +33 = 55

也就是將取到的參數用atoi函數變成數字

⑻ 求gcc編譯與鏈接選項參數介紹的資料

gcc --help
不用資料,在命令行里有不懂的參數或者用法可以像上面那樣,[program name] --help
再詳細就翻閱GNU的手冊或者官網資料。

⑼ (Linux)gcc進行優化編譯的參數是什麼

將file.c文件編譯產生可執行文件myprog(-o選項),並且在編譯的時候,生成調試信息(-g信息)。讓gdb調試器可以調試該程序。
gcc是編譯器程序名字
-o是可執行文件名字輸出參數
-g是插入調試信息參數
當然是調試可執行文件myprog

⑽ cmake中怎樣設置gcc的編譯參數

在configure的時候,加上–host=arm-linux,結果沒有實現我們要的效果,沒有將編譯器從默認的 gcc改成arm-linux-gcc,編譯器還是用的默認的gcc: [crifan@localhost lrzsz-0.12.20]$ CFLAGS=-O2

閱讀全文

與gcc編譯參數相關的資料

熱點內容
兵器pdf 瀏覽:920
雲伺服器怎麼限制cpu 瀏覽:164
學信網用的什麼app 瀏覽:876
linux重啟命令apache 瀏覽:751
半夜解壓有什麼壞處 瀏覽:424
linux代理命令 瀏覽:637
調用tasking的編譯器編譯 瀏覽:292
青檸app是什麼 瀏覽:866
linuxapachephp56 瀏覽:396
安卓手機如何打開eng文件 瀏覽:23
看拉丁電視都用什麼app好 瀏覽:779
什麼是哲學pdf 瀏覽:509
hdfs的三個下載命令 瀏覽:525
java常用的排序演算法 瀏覽:359
51單片機連接adc 瀏覽:861
python命名變數報錯 瀏覽:122
安卓手機如何換windows系統 瀏覽:614
python中的類是什麼 瀏覽:632
我的英雄學院用哪個app可以看 瀏覽:37
excel插入選項卡對象命令 瀏覽:695