-static-libasan的未定义符号错误 [英] Undefined symbol error with -static-libasan

查看:779
本文介绍了-static-libasan的未定义符号错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用地址清理程序来清理我的与SOCI链接的应用程序。但是,在与Oracle一起使用时,会出现提示afterijg错误消息。

I use address sanitizer to sanitize my application, Which is linked with SOCI. But that prompt followijg error message while using with Oracle.

./SociUT: symbol lookup error: /home/testhome/libs/libsoci_oracle.d.so.1.4.18: undefined symbol: __asan_unregister_globals

以下是应用程序的构建输出

Here is the build output of aplication

/home/rel/GCC/asan-gcc-4.9.3/bc0232/bin/g++ -std=c++11  -g3 -static-libasan -fsanitize=address -fno-omit-frame-pointer  -L/home/mt_1/4/4.7.c/build/bc0397/tech/MB/link/API/63  -L/usr/lib64  -L/usr/lib64  -L/home/janaka077/mt-git/mt-database/mt_1/database_SOCI_Core/bin  -L/usr/local/boost_1_59_0/stage/lib  -L/usr/local/boost_1_59_0/stage/lib  -L/usr/local/gtest-1.7.0/lib/.libs   -o SociUT Main.o version.o  -lmb.d -lrdmacm -libverbs -lxml2 -lmsoci.d -lboost_date_time -lboost_filesystem -lboost_system -lboost_serializion -lboost_thread -lboost_chrono -lgtest -lz  -lnsl -lrt -ldl -lz -lcrypt -lnuma


推荐答案

这是< a href = https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64234 rel = nofollow noref errer> GCC PR 64234 。在某些时候,我什至可以修复它)

This is GCC PR 64234. At some point I may even get to fixing it)

可以使用动态运行时代替(例如,删除 -static-libasan )?另一种选择是将 -lsoci_oracle.d 添加到 LDFLAGS (这将通知GCC导出必要的符号)。或者,您也可以添加一个非常愚蠢的解决方法,即从代码中强制引用丢失的符号:

Can you use dynamic runtime instead (i.e. remove -static-libasan)? Another option is adding -lsoci_oracle.d to LDFLAGS (this would inform GCC to export necessary symbols). Or you can add a really silly workaround i.e. force a reference to missing symbol from your code:

extern "C" void __asan_unregister_globals(void *globals, size_t n);
void *force_missing_symbol = (void *)__asan_unregister_globals;

(您需要针对 all 丢失的符号,原型进行此操作可以从此标头中获得)。

(you'll need to do this for all missing symbols, prototypes can be obtained from this header).

这篇关于-static-libasan的未定义符号错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆