新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > GCC常用參數大全

        GCC常用參數大全

        作者: 時間:2011-06-23 來源:網絡 收藏

        1. 頭文件
        象conio.h應該變成curses.h

        2. 沒有itoa函數
        itoa?不對吧,標準C/C++里根本沒有這個函數。即使在Windows平臺下某些編譯器提供了該函數[3],沒有任何移植性不說,還只能解決int類型(也許其他函數還可以解決long、unsigned long等類型),浮點類型又怎么辦?當然,辦法還是有,那就是:sprintf。

        char s[100];
        sprintf(s, "%f", 123.123456);

        3. 關于sqrt,sin和cos函數
        就算是引入math.h頭文件,也不會找到sqrt,sin和cos函數。應該用鏈接庫來解決。
        有時候我們使用了某個函數,但是我們不知道庫的名字,這個時候怎么辦呢?很抱歉,對于這個問題我也不知道答案,我只有一個傻辦法.首先, 我到標準庫路徑下面去找看看有沒有和我用的函數相關的庫,我就這樣找到了線程(thread)函數的庫文件(libpthread.a). 當然,如果找不到,只有一個笨方法.比如我要找sin這個函數所在的庫. 就只好用 nm -o /lib/*.so|grep sin>~/sin 命令,然后看~/sin文件,到那里面去找了. 在sin文件當中,我會找到這樣的一行libm-2.1.2.so:00009fa0 W sin 這樣我就知道了sin在 libm-2.1.2.so庫里面,我用 -lm選項就可以了(去掉前面的lib和后面的版本標志,就剩下m了所以是 -lm).

        4. Makefile出現missing separator的錯誤
        原因是目標聲明行下面的命令行必須用Tab鍵分開(而不是空格)

        PG: PG.o
        [ Tab鍵 ]gcc -o PG -O -O2 -lm /lib/ld-2.2.93.so PG.o
        PG.o: PG.c pointgroup.h
        [ Tab鍵 ]gcc -c -O -O2 PG.c
        clean:
        [ Tab鍵 ]rm -f *.o

        5. 注意文件的DOS格式字符
        調試的時候應該注意文件可能有DOS格式字符,必須先用如下命令去掉文件中的DOS格式字符:
        tr -d file> tmp_file
        mv tmp_file file>

        -o FILE
        指定輸出文件名,在編譯為目標代碼時,這一選項不是必須的。如果FILE沒有指定,缺省文件名是a.out.

        -c
        只編譯不鏈接

        -DFOO=BAR
        在命令行定義預處理宏FOO,其值為BAR

        -IDIRNAME
        將DIRNAME加入到頭文件的搜索目錄列表中

        -LDIRNAME
        將DIRNAME加入到庫文件的搜索目錄列表中,缺省情況下gcc 只鏈接共享庫

        -static
        鏈接靜態庫,即執行靜態鏈接

        -lFOO
        鏈接名為libFOO的函數庫

        -g
        在可執行程序中包含標準調試信息

        -ggdb
        在可執行程序中包含只有GNU debugger才能使別的達兩條是信息

        -O
        優化編譯過的代碼

        -ON
        指定代碼優化的級別為N,o=N=3

        -ansi
        支持ANSI/ISO C的標準語法,取消GNU的語法擴展中與該標準有沖突的部分
        (但這一選項并不能保證生成ANSI兼容的代碼)

        -pedantic
        允許發出ANSI/ISO C標準所列出的所有警告

        -pedantic -errors
        允許發出ANSI/ISO C標準所列出的所有錯誤

        -traditional
        支持Kernighan Ritchie C語法(如用舊式語法定義函數);如果不知道這個選項的含義,也沒有關系

        -w
        關閉所有警告,建議不要使用此項

        .Wall
        允許發出gcc能提供的所有有用的警告,也可以用-W(warning)來標記指定的警告

        -werror
        把所有警告轉換為錯誤,以在警告發生時中止編譯過程

        -MM
        輸出一個make兼容的相關列表

        -v
        顯示在編譯過程的每一步中用到的命令

        本文由粵嵌教育(嵌入式培訓機構www.gec-edu.org)提供


        關鍵詞: 參數

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 铜陵市| 建昌县| 陆良县| 霍林郭勒市| 祁门县| 关岭| 祁东县| 唐海县| 安远县| 镇远县| 新巴尔虎左旗| 民勤县| 四子王旗| 南乐县| 万安县| 成武县| 滨州市| 阿鲁科尔沁旗| 阜阳市| 屯留县| 广西| 楚雄市| 东明县| 盱眙县| 双柏县| 福建省| 扎兰屯市| 四平市| 洪湖市| 涞水县| 沂源县| 米脂县| 拜泉县| 蓝山县| 泸定县| 康乐县| 育儿| 峨山| 兴海县| 台湾省| 通渭县|