foo.o
(libVendorBar.a
とlibVendorZoo.a
に従います)で構成されるlibfoo.a
を出荷したいと思います。依存ライブラリのシンボルのみを削除するにはどうすればよいですか?
私がlibfoo.a
をリンクして生成すると、libVendor*.a
のシンボルは、潜在的なクライアントアプリケーションがリンクする可能性があるため、まだ公開されています。
私のコントロール外の多くの理由から、サードパーティのクライアントがベンダーのライブラリと直接リンクできるようにすることは絶対にありません。
gfでlibfooのすべてのlibVendorシンボルを解決して破棄して、libfooのシンボルだけが表示されるようにするにはどうすればよいですか?
現在、LD_FLAGS
は使用されていません。すべてが静的にリンクされています。
このhttps://linux.die.net/man/1/stripは見たことがありますか? – zappy
'' strip'は '-K'でも欲しいことをしません。静的ライブラリからアーカイブインデックスと呼ばれるものを破棄しているようです。 ['ranlib'を介してインデックスを再生成した場合](https://stackoverflow.com/questions/11346240/ranlib-and-static-library)、リンクされたバイナリはすべての" branch and link "命令で* super * strangeです無限ループを作成することができます。根本的に何か間違っていることを認識する前に、私は半分ずつ、 'strip'と' ranlib'のフォールアウトをデバッグするのに過ごしました。確かに、gccの中に私が望むことをすることができるものがなければならないのでしょうか? –
https://stackoverflow.com/questions/33851045/gcc-a-static-library-with-undefined-symbolsによると、私が探しているのはすべてのシンボルを完全に解決する '-static'フラグです。私はgccがシンボルの大部分を捨てるのに十分にスマートになることを意味することを望んでいます。私は明日この記事を更新する予定だと思う。 –