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