実行時にプラグインとしてロードされる動的ライブラリを作成しています。実行時に、ライブラリのロードに失敗し、次のメッセージが表示されます。
dlerror:/path/to/so: undefined symbol: fstat
動的ライブラリは、libsodium
. 図書館で使われてlibsodium
いる唯一の場所を突き止めました。fstat()
私が理解しているように、fstat()
の一部である必要がlibc
あり、追加のライブラリをインストールする必要はありません。私は何が欠けていますか?
EDIT1:へのリンクがほとんどの機能とどのように異なるかについての追加情報fstat()
を見つけましたが、それが私の状況にどのように適用されるか正確にはわかりません。ディストリビューション用に提供されたメイクファイルを使用してコンパイル/リンクlibsodium
しています。動的ライブラリは、その回答で推奨されているコンパイラ ドライバーでコンパイルされています。
EDIT2: CMake によって生成されたリンカー コマンドは次のとおりです。
/usr/bin/c++ -fPIC -O3 -DNDEBUG -rdynamic -nodefaultlibs -undefined_warning -fPIC -fvisibility=hidden -shared -Wl,-soname,lin.xpl -o src/xplane_plugin/lin.xpl src/path/to/object/file1.cpp.o src/path/to/object/file2.cpp.o src/plugin/libplugin.a /usr/local/lib/libpng16.a -lz src/plenty/of/dependencies.a lib/glew/libglew.a src/another/library.a /usr/local/lib/libsodium.a /usr/lib/x86_64-linux-gnu/libcurl.so lib/json11/libjson11.a -lpthread deps/some/library.a /usr/local/lib/libzip.a -lbz2 -llzma -lssl -lcrypto -lstdc++fs -lz