2015-10-24 3 views
1

Я пытаюсь скомпилировать Qemu для этой цели статическим способом: {arm-linux-user, armeb-linux-user, arm-softmmu}.Ошибка статической конфигурации Qemu (локальное хранилище потоков)

вот эта команда конфигурирования Я использую:

./configure --target-list="arm-linux-user armeb-linux-user arm-softmmu" --disable-werror --enable-debug --static 

Когда я выполнения этой команды я получил следующее сообщение об ошибке:

C++ compiler c++ does not work with C compiler cc Disabling C++ specific optional code

ERROR: Your compiler does not support the __thread specifier for Thread-Local Storage (TLS). Please upgrade to a version that does.

Или моя куб.см версия 5.1.1 так что это совершенно новое:

[[email protected] qemu]$ cc -v 
Utilisation des specs internes. 
COLLECT_GCC=cc 
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/5.1.1/lto-wrapper 
Cible : x86_64-redhat-linux 
Configuré avec: ../configure --enable-bootstrap --enable-languages=c,c++,objc,obj-c++,fortran,ada,go,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --disable-libgcj --with-isl --enable-libmpx --enable-gnu-indirect-function --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux 
Thread model: posix 
gcc version 5.1.1 20150618 (Red Hat 5.1.1-4) (GCC) 

Я могу скомпилировать его, как правило, без аргумента «--статический». Мне нужно скомпилировать его в статическом порядке, поскольку я пытаюсь синхронизировать файлы в файловой системе, где исполняются исполняемые файлы ELF.

Если это невозможно, я мог бы использовать qemu-system-arm для подражания на борту.

+0

Вы знаете, за то, что вы имеете '' г ++ установлен? – tonysdg

+0

Я не уверен, почему configure жалуется на поддержку TLS, но использование --static действительно поддерживается только для создания исполняемых файлов linux-user (arm-linux-user, armeb-linux-user и т. Д.). Попробуйте настроить и создать исполняемые файлы linux-user только статически (--target-list = "arm-linux-user armeb-linux-user" --disable-tools --static) в своем собственном каталоге сборки. Затем создайте двоичный файл arm-softmmu (если нужно) нестатически во втором builddir (--target-list = "arm-softmmu"). –

+0

ОК спасибо, проверит это позже, спасибо за ваш ответ. Мне удалось получить статическую версию qemu несколько недель назад через репозиторий моего дистрибутива linux, но я дам вам решение. –

ответ

0

Configure также выдаст это сообщение об ошибке, если ваш компоновщик сломан (т. Е. Попытка скомпилировать программу .c к исполняемому файлу не работает), поскольку проверка TLS является первой, которая пытается это сделать - - в этом случае он напечатает ошибочное сообщение об ошибке. В этом случае ваш компилятор определенно достаточно для обработки __thread, поэтому вы должны проверить, работает ли ваш компоновщик в порядке. Глядя в config.log, вы увидите все программы, которые запускал скрипт конфигурации QEMU, и их вывод.

(я просто представил патч - http://patchwork.ozlabs.org/patch/548123/ -., Что приведет к менее запутанным предупреждение, если ваш компоновщик не работает)

+0

хорошо спасибо, проверит это тоже;) –

Смежные вопросы