Ошибка компиляции (ld: не удается найти libmvec_nonshared.a, libmvec.so.1) при использовании установленного GCC-4.5.3 - PullRequest
0 голосов
/ 22 мая 2018

Невозможно напечатать traceback или stackdump, используя GCC-4.8.5, так как начиная с GCC версии 4.6, настройка по умолчанию была изменена на -fomit-frame-pointer.Чтение в Интернете, как по умолчанию, можно вернуть к -fno-omit-frame-pointer, настроив GCC с параметром конфигурации --enable-frame-pointer.Поэтому я установил GCC-4.5.3 в свой домашний каталог со следующими параметрами конфигурации.

Параметры конфигурации:

../gcc-4.5.3/configure -v --prefix=/home/GCC1-4.5.3/usr --infodir=/home/GCC1-4.5.3/usr/build/share/info --mandir=/home/GCC1-4.5.3/usr/build/share/man --libdir=/home/GCC1-4.5.3/usr/build/lib64 --libexecdir=/home/GCC1-4.5.3/usr/build/lib64 --enable-languages=c,c++,objc,fortran,obj-c++,java --with-gxx-include-dir=/home/GCC1-4.5.3/usr/build/include --enable-ssp --enable-frame-pointer --disable-libssp --disable-plugin --with-bugurl=http://bugs.opensuse.org/ --with-pkgversion='SUSE Linux' --disable-libgcj --disable-libmudflap --with-slibdir=/home/GCC1-4.5.3/usr/build/lib64 --enable-__cxa_atexit --enable-libstdcxx-allocator=new --disable-libstdcxx-pch --enable-version-specific-runtime-libs --enable-linker-build-id --enable-linux-futex --program-suffix=-4.5.3 --without-system-libunwind --with-arch-32=i686 --with-tune=generic --build=x86_64-suse-linux --host=x86_64-suse-linux

Перед включением моего установленного компилятора GCC мой Makefile.common выглядит следующим образом:

CROSS_COMPILER_PREFIX = x86_64-dx-linux-gnu
ADDR2LINE = $(CROSS_COMPILER_PREFIX)-addr2line
AR        = $(CROSS_COMPILER_PREFIX)-ar
AS        = $(CROSS_COMPILER_PREFIX)-as
CXX       = $(CROSS_COMPILER_PREFIX)-c++
CXXFILT   = $(CROSS_COMPILER_PREFIX)-c++filt
CPP       = $(CROSS_COMPILER_PREFIX)-cpp
GXX       = $(CROSS_COMPILER_PREFIX)-g++
GCC       = $(CROSS_COMPILER_PREFIX)-gcc
GCCBUG    = $(CROSS_COMPILER_PREFIX)-gccbug
GCOV      = $(CROSS_COMPILER_PREFIX)-gcov
LD        = $(CROSS_COMPILER_PREFIX)-ld

После установки я включил компилятор в свой Makefile.common, как показано ниже:

CROSS_COMPILER_PREFIX = x86_64-dx-linux-gnu (GCC-4.8.5 Prefix)
CROSS_COMPILER_PREFIX = x86_64-suse-linux(My installed GCC-4.5.3 Prefix) 
ADDR2LINE = $(CROSS_COMPILER_PREFIX)-addr2line
CXX       = $(CROSS_COMPILER_PREFIX)-c++-4.5.3
CXXFILT   = $(CROSS_COMPILER_PREFIX)-c++filt
CPP       = $(CROSS_COMPILER_PREFIX)-cpp-4.5.3
GXX       = $(CROSS_COMPILER_PREFIX)-g++-4.5.3
GCC       = $(CROSS_COMPILER_PREFIX)-gcc-4.5.3
GCCBUG    = $(CROSS_COMPILER_PREFIX)-gccbug
GCOV      = $(CROSS_COMPILER_PREFIX)-gcov-4.5.3
LD        = $(CROSS_COMPILER_PREFIX)-ld

После включения, когда я пытаюсь дать команду make, она завершается с ошибкой ниже

/usr/bin/ld: cannot find /usr/lib64/libmvec_nonshared.a
/usr/bin/ld: cannot find /lib64/libmvec.so.1
collect2: ld returned 1 exit status

Также я заметил, что обе эти библиотеки присутствуют в другом пути и не присутствуют в вышеупомянутом пути (/ usr / lib64 /, / lib64).У меня нет прав на запуск команды sudo, создание ссылки или внесение каких-либо изменений в / usr / path.Ниже приведен вывод, когда я запускаю ld -lmvec --verbose.

attempt to open /usr/x86_64-suse-linux/lib64/libmvec.so failed
attempt to open /usr/x86_64-suse-linux/lib64/libmvec.a failed
attempt to open /usr/lib64/libmvec.so failed
ld: cannot find -lmvec

Примечание:

Сборка выполнена успешно с GCC_4.8.5, где сборка завершается ошибкой с моим установленным GCC_4.5.3.

Может кто-нибудь помочь мне решить эту проблему?Нужно ли что-то менять в Makefile.common?почему make успешно работает с GCC_4.8.5 и не работает для GCC_4.5.3?

Как внести изменения в Makefile, чтобы выполнить поиск ld в пути к библиотеке?

В дополнение к этомузапрос может любой кто-нибудь может помочь мне проверить, не указан ли указатель кадра или нет?

Заранее спасибо.

...