1

Synology x86 NAS システム (Intel Atom) を実行するために gcc の -std=c++0x オプションを必要とするプログラムをコンパイルしたいと考えています。クロスコンパイル ツールチェーン (synoroot ディレクトリ) を使用しています。

$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 (GCC) 4.2.1) を使用すると、./tst は synology で正しく実行されますが、-std=c++0x はサポートされません。

では、どうすれば実行を成功させ、C++0x をサポートできるのでしょうか?

乾杯

4

2 に答える 2

1

ターゲット システム (Synology) がホスト システム (Ubuntu) と十分に異なり、クロス コンパイラが必要な場合は、次の 2 つのオプションしかありません。

  1. 必要な新しい言語/ライブラリ機能をサポートする新しいクロス コンパイル ツールチェーンを入手します (ソースから自分でビルドすることもできます)。
  2. C++0x 機能を必要としないように、アプリケーションを書き直してください。
于 2013-01-11T13:57:57.607 に答える