私は (linux) gcc 4.8.2 でコンパイルされた小さな静的ライブラリを -fvisibility=hidden で共有ライブラリにリンクしています (C コードの gcc と Fortran コードの ifort の 2 つのバージョンがあります)。スタティック ライブラリは、いくつかの内部関数で構成されており、すべて "ST_LIB_" という接頭辞が付いています。
静的ライブラリで宣言された関数が、共有ライブラリにリンクされている実行可能ファイル/ライブラリで使用できないことを確認したいと思います。Linux で、プレフィックスを持つ関数が外部ライブラリで使用できないことを確認するための最適なコマンドは何ですか?
私が試してみました:
nm --dynamic shared_lib | grep -i "ST_LIB_" | wc -l
(出力 0)
readelf -d shared_lib | grep -i "ST_LIB_" | wc -l
(出力 0)
nm -g shared_lib | grep -i "ST_LIB_" | wc -l
(共有ライブラリに応じて 26 または 0 を出力)
readelf -s shared_lib | grep -i "ST_LIB_" | wc -l
(共有ライブラリに応じて 26 または 0 を出力)
readelf -Ws shared_lib | grep -i "ST_LIB_" | grep -i "HIDDEN" | wc -l
(共有ライブラリに応じて 26 または 0 を出力)