Неопределенный символ: fstat в библиотеке Dynami c - PullRequest
1 голос
/ 13 апреля 2020

Я пишу динамическую c библиотеку, которая загружается во время выполнения в качестве плагина. Во время выполнения библиотека не может загрузить следующее сообщение:

dlerror:/path/to/so: undefined symbol: fstat

Библиотека Dynami c состоит из набора связанных между собой библиотек stati c, включая libsodium. Я отследил libsodium как единственное место, где fstat() используется в библиотеке.

Насколько я понимаю, fstat() должен быть частью libc и не должен требовать дополнительных библиотек. быть установленным. Чего мне не хватает?

EDIT1: я нашел некоторую дополнительную информацию о том, как ссылка на fstat() отличается от большинства функций, но я не совсем уверен, как она применяется к моя ситуация. Я компилирую / связываю libsodium с предоставленными make-файлами для их распространения, а библиотека Dynami c компилируется с драйвером компилятора, как рекомендовано в этом ответе.

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
...