共享库(JNI)中的Clang undefined行为清理程序:“undefined symbol:__ubsan_vptr_type_cache”

时间:2018-03-28 21:53:38

标签: c++ java-native-interface clang undefined-symbol sanitizer

我们的clang++可执行文件构建与未定义的行为清理程序在编译时可以正常运行,如下所示:

ccache clang++ -Qunused-arguments -fcolor-diagnostics -c -MMD -MP -std=c++11 --O1 -g3 -fPIC -fsanitize=address,undefined -fno-omit-frame-pointer -I /usr/lib/jvm/java-8-openjdk-amd64/include -I /usr/lib/jvm/java-8-openjdk-amd64/include/linux -o native/instrumen.o native/instrument.cpp

并链接到可执行文件,如下所示:

ccache clang++ -Qunused-arguments -fcolor-diagnostics -fsanitize=address,undefined -o cegis -Wl,--start-group native/instrument.o -Wl,--end-group

但是,如果我们在共享库中将其链接如下:

ccache clang++ -Qunused-arguments -fcolor-diagnostics -fsanitize=address,undefined -shared -o libsynth4j.so native/synth4j.o native/instrument.o ../lib/libinfo.a

尝试使用JNI从Java加载库时出现以下错误:

libsynth4j.so: undefined symbol: __ubsan_vptr_type_cache

使用clang undefined行为清理程序创建共享库而不是可执行文件时是否还有其他注意事项?我们的clang ++版本是在Ubuntu Linux上运行的。

0 个答案:

没有答案
相关问题