2012年8月13日 星期一

Build ppl with Fedora 17 system ....

這幾天比較閒置一些 ,想說將 Desktop 由 Fedora 16 更換為 Fedora 17 好了 !!

Fedora 對我而言 , 主要還是 Coding , Compiler 的工作 , 所以先用 VMPlayer 模擬看看 Fedora 17 好不好用 , 當然也要確認 一些 Code 可以成功的 Compiler .

工作的 Source Code 因為是 Embedded System , 所以大部分都沒有問題 !!

這個 ARM-toolchain 卻出現一些問題 , 目前發現 ppl 在 make 時會出錯 !!
找了半天 , 發現是gcc 4.7.0 的問題 , 並且在 google 上找到修正方式 !!
在 c++ 的 flags 中要多 -fpermissive 的參數 , 為了讓這個 Source Tree 可以共用在 FC16 & FC17 之間 ,於是在 Makefile 中增加下列這段 , 先判別 gcc 是否為 4.7.0 , 如果是在 configure 時候將 CXXFLAGS 加 入 -fpermissive , 如果不是就不加入 .

...........

GCC_VERSION = $(shell gcc --version | grep GCC | awk '{print $$3}')

ifeq ($(GCC_VERSION),4.7.0)
EXT_CXXFLAGS = -fpermissive
else
EXT_CXXFLAGS =
endif

CONFIGURE = LDFLAGS= CXXFLAGS=$(EXT_CXXFLAGS) \
../$(SRC_VERSION)/configure \
..........................


2012/08/14:
Build 整個 ARM toolchain 過程中 ,eglibc 也出現一堆怪問題 !!
Google 了一些解答後發現都是 C++ fpermissive 參數問題 (參考下列網址 說明) !!


http://gcc.gnu.org/onlinedocs/gcc-4.0.4/gcc/C_002b_002b-Dialect-Options.html
-fpermissive
Downgrade some diagnostics about nonconformant code from errors to warnings. Thus, using -fpermissive will allow some nonconforming code to compile.
最後決定將 fpermissive 參數提前到最外的 Makefile , 讓build 過程 CXXFLAGS 都
有這個參數 !!


...........
GCC_VERSION = $(shell gcc --version | grep GCC | awk '{print $$3}')

ifeq ($(GCC_VERSION),4.7.0)
EXT_CXXFLAGS = -fpermissive
else
EXT_CXXFLAGS =
endif

export CXXFLAGS += $(EXT_CXXFLAGS)

...........


終於可以 成功的 build 完 , 接著試試看是否有問題 , build 一些Program 來試試 !!