gcc g++ 編譯優化選項問題
(由於編譯的選項很多,我們實際在用的時候只是其中很少的一部分,因此,這裡只列舉幾個具有代表性的選項說一下。說是幾個,其實也是比較全了)
一、編譯優化選項
1、-o0
-o1-o2
-o3編譯時使用選項-o
可以告訴
gcc同時減小**的長度和執行時間,其效果等價於
-o1。在這一級別上能夠進行的優化型別雖然取決於目標處理器,但一般都會包括執行緒跳轉
(thread jump)
和延遲退棧
(deferred stack pops)
兩種優化。選項
-o2告訴
gcc除了完成所有
-o1級別的優化之外,同時還要進行一些額外的調整工作,如處理器指令排程等。選項
-o3則除了完成所有
-o2級別的優化之外,還包括迴圈展開和其它一些與處理器特性相關的優化工作。通常來說,數字越大優化的等級越高,同時也就意味著程式的執行速度越快。
注意:o3少用,有的時候
-o3
會出來一些意想不到的問題
(編譯的優化有限,最好從源**上優化)
例如: gcc -wall -o0 test.c -o testo0
gcc -wall -o3 test.c -o testo3
2、static
此選項將禁止使用動態庫,所以,編譯出來的東西,一般都很大,也不需要什麼動態連線庫,就可以執行.
3、-traditional
試圖讓編譯器支援傳統的c
語言特性
4、-wall
(warning all)
顯示所有的warning
5、-g
只是編譯器,在編譯的時候,產生除錯資訊。
6、-ansi
關閉gnu c
中與ansi c
不相容的特性,啟用
ansi c
的專有特性
(包括禁止一
些asm inline typeof
關鍵字,
以及unix,vax
等預處理巨集,
osgEarth編譯的一些問題
這兩天藉著osg培訓的機會捯飭了下64位osgearth的編譯。遇到了一些問題 首先我沒有編譯osg,用的提供的osg3.2.1編譯好的64位包。編譯osgearth先後編譯了2個版本,先是2.7.0後又編譯了2.5.0。本來osgearth別人也提供了一套開發包,但是沒有辦法直接執行示例程式,所以...
關於g 和gcc的一些誤區
關於g 和gcc的誤區 1 認為g 只能編譯c gcc只能編譯c其實,都可以的,但應該注意 a.c檔案g 把它當成c 程式,gcc當成c程式 cpp檔案 都認為是c 程式,c 是c的超集 b.編譯階段g 會呼叫gcc,對於c 檔案,兩者是等價的,但gcc不能自動和c 的庫鏈結,只能使用g 2 gcc...
核心編譯遇到的一些問題
我在編譯核心的時候也不知道是我的編譯方式有問題還是其他的原因 使用的是天嵌e8的開發板附帶的原始碼,cpu是三星的s5pv210,核心版本3.0.8 遇到了很多的問題,下面就是我遇到的一些問題和解決方案,有些方案是我在網上找,有些是我自己想的,如果有什麼不對的,請告知,謝謝 問題1 drivers ...