一个通过强制使用符号来避免链接器忽略符号的方法
虽然如果链接器在链接库时将符号忽略了一般是由于设置了 --as-needed 选项,或者编译时的优化太激进了,所以一般还是要去分析编译和链接过程来解决。
但如果确实不好解决,可以通过强制使用这些被忽略的符号的方式来让链接器不要忽略:
// 对所有被忽略的符号
extern "C" void __asan_unregister_globals();
extern "C" void __asan_register_globals();
__attribute__((used)) void *force_missing_symbols[] = {(void *)__asan_unregister_globals,(void *)__asan_register_globals
};