2009-10-31 10 views
13

私は現在、LinuxとuClibcでCを使用している組み込みプロジェクトに取り組んでいます。私たちはC++に移行することに興味がありますが、libstdC++でのリンクに伴うオーバーヘッドは欲しません。私の印象は、iostreamやベクトルなど、STLのものを使用しない限り、これが可能であるということです。libstdC++へのリンクを避ける

libstdC++にリンクせずにg ++にコンパイルを指示するにはどうすればよいですか?

答えて

10

コンパイルするときは、コンパイル時にg++ -cを使用してください。次に、リンクするにはg++の代わりにldを使用してください。これはリンカを直接呼び出しますが、コマンドライン(libcとlibcrtを含む)上のすべてのライブラリを指定する必要があります。

あなたは「より良いC」としてのG ++を使用している場合あるいは、あなたは(自動的にlibcの含まれます)最終的なリンクステップのためのgccを使用することができるかもしれ

+0

これを試してみると、リンクしようとすると「__gxx_personality_v0」への未定義の参照が得られます。 – Brian

+0

私はあなたがC++固有の機能を使っていることを意味していると思います。それがどの機能なのかはわかりません。 –

+0

さて、私はthis questionを参照して作業するようになった。あなたは "g ++ -fno-exceptions -c"でコンパイルし、別々にリンクする必要があります。 – Brian

9

あなたは

g++ -nodefaultlibs -fno-exceptions a.cc 
を使用することができます

しかし、あなたは完全性と正確性のためにこの方法を備え++すべてのC ...

2

を使用することはできません。

g++ -c -fno-exceptions a.cpp 
gcc a.o -o a 
関連する問題