2012-01-17 9 views
0

静的にリンクされたglibライブラリを提供するディストリビューションはありますか?私は自分のアプリケーションをglibc-2.7ベースのシステムに出荷する必要があり、glibc-2.1Xに対するビルドがすべて失敗したため、iostreamの問題が発生しました。だから私は静的にすべてをリンクしなければならなかった。私はGoogleで、多くの人々が、上記と同じ問題が発生したGentooにglibを静的にリンクすることができません

/usr/lib/gcc/i686-pc-linux-gnu/4.5.3/../../../../lib/libglib-2.0.a(gmem.o):(.note.stapsdt+0x1c): undefined reference to `glib_mem__alloc_semaphore' 
/usr/lib/gcc/i686-pc-linux-gnu/4.5.3/../../../../lib/libglib-2.0.a(gmem.o):(.note.stapsdt+0x68): undefined reference to `glib_mem__alloc_semaphore' 
/usr/lib/gcc/i686-pc-linux-gnu/4.5.3/../../../../lib/libglib-2.0.a(gmem.o):(.note.stapsdt+0xb0): undefined reference to `glib_mem__alloc_semaphore' 
/usr/lib/gcc/i686-pc-linux-gnu/4.5.3/../../../../lib/libglib-2.0.a(gmem.o):(.note.stapsdt+0xfc): undefined reference to `glib_mem__alloc_semaphore' 
/usr/lib/gcc/i686-pc-linux-gnu/4.5.3/../../../../lib/libglib-2.0.a(gmem.o):(.note.stapsdt+0x144): undefined reference to `glib_mem__realloc_semaphore' 
/usr/lib/gcc/i686-pc-linux-gnu/4.5.3/../../../../lib/libglib-2.0.a(gmem.o):(.note.stapsdt+0x194): undefined reference to `glib_mem__realloc_semaphore' 
/usr/lib/gcc/i686-pc-linux-gnu/4.5.3/../../../../lib/libglib-2.0.a(gmem.o):(.note.stapsdt+0x1e0): undefined reference to `glib_mem__free_semaphore' 
/usr/lib/gcc/i686-pc-linux-gnu/4.5.3/../../../../lib/libglib-2.0.a(gmem.o):(.note.stapsdt+0x218): undefined reference to `glib_mem__alloc_semaphore' 
/usr/lib/gcc/i686-pc-linux-gnu/4.5.3/../../../../lib/libglib-2.0.a(gmem.o):(.note.stapsdt+0x264): undefined reference to `glib_mem__realloc_semaphore' 
/usr/lib/gcc/i686-pc-linux-gnu/4.5.3/../../../../lib/libglib-2.0.a(gslice.o):(.note.stapsdt+0x1c): undefined reference to `glib_slice__alloc_semaphore' 
/usr/lib/gcc/i686-pc-linux-gnu/4.5.3/../../../../lib/libglib-2.0.a(gslice.o):(.note.stapsdt+0x60): undefined reference to `glib_slice__free_semaphore' 
/usr/lib/gcc/i686-pc-linux-gnu/4.5.3/../../../../lib/libglib-2.0.a(gdataset.o):(.note.stapsdt+0x1c): undefined reference to `glib_quark__new_semaphore' 
/usr/lib/gcc/i686-pc-linux-gnu/4.5.3/../../../../lib/libglib-2.0.a(gdataset.o):(.note.stapsdt+0x5c): undefined reference to `glib_quark__new_semaphore' 
/usr/lib/gcc/i686-pc-linux-gnu/4.5.3/../../../../lib/libglib-2.0.a(gdataset.o):(.note.stapsdt+0x9c): undefined reference to `glib_quark__new_semaphore' 
/usr/lib/gcc/i686-pc-linux-gnu/4.5.3/../../../../lib/libglib-2.0.a(gdataset.o):(.note.stapsdt+0xdc): undefined reference to `glib_quark__new_semaphore' 
collect2: ld returned 1 exit status 
make: *** [StreetBasketBall] Error 1 

ld-lrtを追加することを主張するバグレポートを見つけましたが、悲しいことに、私がチェック:

はlibxcbとglibの両方が不足しているシンボルに失敗しました pkg-configの出力、それは既にそれを含んでいます。

どうすればこの問題を解決できますか?あるいは私のために他の配布物がありますか?

ありがとうございます!

P.S:USE = " - 静的-libsのが" make.confの

+0

なぜお尋ねしますか? glibcのさまざまなバージョンで、いくつかのシステムでアプリケーションをビルドできないのはなぜですか?私の詳細な答えを見てください! –

答えて

0

GTKで有効になっていると、そのGlibLGPLライセンスの下でライセンスされています。

LGPLライセンスのいずれかの組み合わせの仕事は(つまり、口が達者を結ぶプログラム)を明示的「ライブラリの部分の変更を制限するものではありませ」すべきとはに提案することを必要とするため「適切な共有ライブラリ・メカニズムを使用します」ゴール。その目的は、Glibにリンクされたソフトウェアのユーザーは、Glibを​​簡単に改良(例えば更新)し、改良されたGlibにリンクされたソフトウェアを使用できるようにすることです。

実際には、Glib sort-ofは共有ライブラリでなければならず、バイナリをGlibの亜種に静的にリンクして配布する場合は、Glibのソースと十分なファイルを提供して、新しいGlib(つまり、アプリケーションのすべてのオブジェクトファイル)に対して再リンクすることができます。

Glibの静的にリンクされたバージョンは、「不法」なので(LGPLとFSFの目的に照らして)ソートされているため、見つからない可能性があります。

配布物は、静的なGlibライブラリを与えることによって、LGPLライセンスの違反を容易にしません。

警告:私は弁護士

PSはないです。あなたの問題を解決するには、libcだけを静的にリンクしようとするかもしれませんが、Glibはをdlopenに使用しているため、動的にリンクする必要があります。

あなたのソフトウェアをフリーソフトウェア(GPLライセンスなど)にして、ソースコードを配布することができます(ビルドやユーザーや流通メーカーへのパッケージングの負担が残ります)。

配送バイナリを主張する場合は、古いシステム(libc < = 2.7)用と新しいシステム用の2種類があります。

関連する問題