gcc -Wall -O2 -I/usr/include/tcl8.5 -I../misc -DHAS_GUI -o psim psim.c pipe-std.c \
../misc/isa.c -L/usr/lib/ -ltk8.5 -ltcl8.5 -lm
/tmp/cchKTZy7.o:(.data.rel+0x0):对‘matherr’未定义的引用
Вы связываете и получаете неопределенную ошибку ссылки на matherr
.
Похоже, matherr
является частью математической библиотеки SVID.Согласно справочной странице matherr(3)
этот символ больше не присутствует в Glibc версии 2.27 и выше.
ОПИСАНИЕ
Примечание: механизм, описанный на этой странице, больше не поддерживается glibc.До glibc 2.27 он был помечен как устаревший.Начиная с glibc 2.27, механизм был полностью удален.Новые приложения должны использовать методы, описанные в math_error (7) и fenv (3).На этой странице описан механизм matherr () для поддержки и портирования старых приложений.
Справочная страница math_error(7)
говорит, что для проверки на наличие ошибок необходимо сделать следующее:
- установить
errno
в ноль - call
feclearexcept(FE_ALL_EXCEPT)
;
После того, как математический расчет завершится, вы должны проверить следующее для ненулевогозначение, указывающее на ошибку:
errno
fetestexcept(FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW);
Так как вы парень или девушка пытаетесь использовать программу (а несопровождающий) Я предлагаю два курса действий.Стратегия состоит в том, чтобы использовать дистрибутив, где все работает, и добавить его к сопровождающему Y86, чтобы исправить это.
Сначала используйте другой, более старый дистрибутив, который предоставляет Glibc 2.26 или более раннюю версию.Что-то вроде Debian 8 (Glibc 2.19) или Fedora 25 (Glibc 2.24) должно работать нормально.
Во-вторых, подайте отчет об ошибке в проекте Y86.Сопровождающие Y86 должны решить проблему, а не студенты, пытающиеся выучить материал класса.