po、qo、ro という 3 つの C オブジェクト ファイルがあり、それらを使用してライブラリを作成したいとします。最初のオブジェクト ファイル po には、エクスポートしたい関数がいくつかあります。これらの関数は、他の 2 つのオブジェクト (qo、ro) を使用して実装されています。そのようなライブラリとリンクするとき、それらのシンボルがメインプロジェクトの他のオブジェクトと衝突する可能性があるため、 po の関数のみが表示され、他の関数は表示されないようにする必要があります。たとえば、qo には po が必要とするいくつかの関数 f() があるかもしれませんが、他のライブラリの中でこのライブラリとリンクするメイン プロジェクトに実装されている f() と衝突する可能性があります。どうすればgccを使用してそれを行うことができますか?
2 に答える
0
You can use GCC`s visibility feature to hide symbols that are not supposed to be exported. Alternatively, re-factor your library source code in such a way that functions are declared as static and so are not exported beyond the translation unit.
于 2011-06-07T19:15:01.567 に答える
0
You need to set visibility for your functions: Controlling Symbol Visibility
于 2011-06-07T19:16:40.540 に答える