同様の問題がありました。それは、私のライブラリにリンクされ、アーカイブに静的にリンクされ.a
ているはずのライブラリに関係していました。.so
私はこれを(ここで使用されるOPオブジェクト名)で決定しました:
nm mylibrary.so | grep ZTVN10_cxxabiv117__class_type_infoE
0000ABC0 U ZTVN10_cxxabiv117__class_type_infoE
U
hereは、シンボルが「未定義」であることを意味します。不足しているオブジェクトのデマングリングされた名前は、次のコマンドで見つけることができます--demangle
。
$ nm --demangle mylibrary.so | grep 0000ABC0
0000ABC0 U abi::class_type_info(params...)
(またはそのようなもの)これは、どのライブラリが欠落しているかを把握するのに役立ちます。
私の場合、コンパイラ行にライブラリを含めた後でも、まだ問題がありました。最終的に、いじくり回した後、次のように、ライブラリ ファイル ( ) がその依存オブジェクト ( ) ファイルの.a
後に来る必要があることを発見しました。.o
g++ -Wl,-E -g -m32 ... -fPIC myobjects1.o myobjects2.o missing_library.a -shared -o mylibrary.so
今私は得ます(これ以上U
):
$ nm --demangle mylibrary.so | grep 0000ABC0
0000ABC0 T abi::class_type_info(params...)
そして最も重要なことは、エラーが発生しなくなったことです。