2

我正在编写一个在运行时作为插件加载的动态库。在运行时,库无法加载并显示以下消息:

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

动态库由一堆链接在一起的静态库组成,包括libsodium. 我已经追踪到图书馆中libsodium唯一使用的地方。fstat()

据我了解,fstat()应该是 的一部分libc,并且不需要安装其他库。我错过了什么?

EDIT1:我发现了一些关于如何链接到与大多数功能不同的附加信息fstat(),但我不确定它究竟如何适用于我的情况。我正在编译/链接libsodium提供的 makefile 以进行分发,并且正在使用该答案中推荐的编译器驱动程序编译动态库。

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
4

0 回答 0