我使用 log4cxx 日志库。我需要链接它的静态版本以避免额外的二进制依赖。我在我的动态库中使用它。log4cxx 的默认构建会生成静态库,但我无法链接它,因为它是在没有 -fPIC 标志的情况下编译的。所以我将 log4cxx bulding 更改为:
CPPFLAGS="-fPIC -static" ./configure
make
结果liblog4cxx.a
,我收到了一个可以链接到我的 .so 库的文件。链接是由 Cmake 完成的,类似于:
target_link_libraries(my_dynamic_lib log4cxx)
link_directories(relative_path_to_dir_where_liblog4cxx.a_lives)
一切看起来都很好,直到运行时。我无法加载 my_dynamic_lib.so 因为undefined symbol "logger"
请解释我出了什么问题以及如何解决这个问题。
谢谢