Я запускал Ubuntu под VirtualBox и использовал automake для сборки системой (netcdf-c) с использованием gcc 7.3.0
Я использовал -fsanitize = address как часть CFLAGS, чтобы я мог выполнять проверки утечки памяти.
Недавно я сделал предлагаемое обновление до Ubuntu 18.04.Теперь ./configure терпит неудачу при проверке кросс-компиляции с ошибкой:
== 9629 == ASan время выполнения не идет первым в начальном списке библиотек;вы должны либо связать среду выполнения с вашим приложением, либо вручную предварительно загрузить его с помощью LD_PRELOAD.
Поэтому я попробовал следующее:
- создал простой файл conftest.c
int main () {return 0;}
- скомпилировано с использованием gcc -o conftest -fsanitize = address conftest.c
- Я запустил ./conftest - это приводитв приведенном выше сообщении об ошибке.
Итак, я попытался:
- добавить -lasan к команде gcc - тот же сбой
- set LD_PRELOAD = /usr / lib / gcc / x86_64-linux-gnu / 7 / libasan.so после компиляции, но перед выполнением ./conftest - сработало.
Однако, если я установлю LD_PRELOAD перед выполнением ./configure, затем ./configure терпит неудачу с различными жалобами: неудивительно.
Я не думаю, что имею достаточный контроль над automake, чтобы решить эту проблему с помощью LD_PRELOAD.
Два вопроса:
Почему при обновлении внезапно gcc неправильно загрузил libasan?
здесь исправление?
доп.Примечания:
- Я удалил и переустановил gcc - без эффекта
- Я удалил старую версию libasan - без эффекта