2013-01-11 78 views
1

我願意編譯需要的gcc -std =的C++ 0x選項,使其執行的Synology NAS的x86系統(英特爾凌動)的程序。我正在使用交叉編譯工具鏈(synoroot目錄)。的Synology交叉編譯的gcc -std =的C++ 0x

$cat tst.cpp 
tst.cpp: 
    int main() { 
    return 0; 
} 

$ gcc --version 
gcc (Ubuntu/Linaro 4.7.2-2ubuntu1) 4.7.2 

$gcc tst.cpp -std=c++0x --sysroot=/usr/local/synoroot -nodefaultlibs /usr/local/synoroot/lib/libc.so /usr/local/synoroot/lib/ld-linux.so.2 /usr/local/synoroot/usr/lib/libstdc++.so /usr/local/synoroot/lib/libm.so -o tst 

$./tst && echo $? 
0 

在Synology:

$./tst 
Floating point exception (core dumped) 

如果我使用的工具鏈GCC(i686的Linux的GNU的海灣合作委員會(GCC)4.2.1),./tst執行正確的Synology但-std = C++ 0x不受支持。

那麼我怎樣才能成功執行和C++ 0x支持?

乾杯

+0

通過使用支持c + + 11的gcc版本:) –

+2

您將不得不使用新的GCC版本進行交叉編譯構建。 –

回答

1

如果目標系統(羣暉)從主機系統(Ubuntu的)充分不同需要一個交叉編譯器,那麼你只有兩個選擇:

  1. 得到一個新的交叉支持新的語言/庫功能,你需要(可能親自構建從源代碼)
  2. 重寫應用程序,使得它不需要C++ 0x特性的編譯工具鏈。
+0

1.據我所知,我使用的工具鏈是Synology或其他公司提供的最新的工具鏈(來自'O7 ...我知道的gcc) – user1970105

+0

2.重寫項目甚至不是一個可行的解決方案(它真的很大):) – user1970105

+0

@ user1970105:當前的工具鏈可能是最新的預編譯版本,但是如果您獲得GCC(和標準庫)4.7源代碼,您將能夠構建自己的v4.7交叉編譯 –