2014-10-28 8 views
0

Моя цель - сделать новую функцию для инструментальной панели pnacl. Прежде чем я это сделаю, я думаю, что я должен сначала создать инструментальную цепочку pnacl.Как построить pnacl toolchain

[11/04 Обновление]

И, наконец, это работает. Некоторые пакеты (bison, byacc, flex) Я не установил и не вызвал эту проблему.

[11/03 Update]

Я использую Ubuntu-14.04.1-настольное-amd64 как моя система

Кроме того, убунту-12.04.5-рабочий стол-amd64 сейчас тестирует [11/03 обновлено]

Я полностью выполнил шаг the document. Все идет нормально, пока я не запустить скрипт toolchain_build_pnacl

Так что я добавить новое сообщение об ошибке здесь:

если я запускаю скрипт, используя GCC для компиляции

toolchain_build/toolchain_build_pnacl.py --gcc --verbose --sync --clobber --install toolchain/linux_x86/pnacl_newlib

то следующее сообщение об ошибке

gcc -DHAVE_CONFIG_H -I. -I../../../src/binutils/gold -I../../../src/binutils/gold -I../../../src/binutils/gold/../include - I../../../src/binutils/gold/../elfcpp -DLOCALEDIR="\"/share/locale\"" -DBINDIR="\"/bin\"" -DTOOLBINDIR="\"/arm-pc-nacl/bin\"" -DTOOLLIBDIR="\"/arm-pc-nacl/lib\"" -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -frandom-seed=yyscript.o -Wno-extended-offsetof -Wno-absolute-value -Wno-unused-function -Wno-unused-const-variable -Wno-unneeded-internal-declaration -Wno-unused-private-field -Wno-format-security -MT yyscript.o -MD -MP -MF .deps/yyscript.Tpo -c -o yyscript.o yyscript.c yyscript.c:1:1: error: return type defaults to ‘int’ [-Werror=return-type] yyscript.c:1:1: error: function

declaration isn’t a prototype [-Werror=strict-prototypes] cc1: error: unrecognized command line option "-Wno-unused-private-field" [-Werror] cc1: error: unrecognized command line option "-Wno-unneeded-internal-declaration" [-Werror] cc1: error: unrecognized command line option "-Wno-unused-const-variable" [-Werror] cc1: error: unrecognized command line option "-Wno-absolute-value" [-Werror] cc1: error: unrecognized command line option "-Wno-extended-offsetof" [-Werror] cc1: all warnings being treated as errors make[4]: *** [yyscript.o] Error 1

, если я запускаю его с лязгом по умолчанию для компиляции

toolchain_build/toolchain_build_pnacl.py --verbose --clobber --install toolchain/linux_x86/pnacl_newlib

то следующее сообщение об ошибке генерируется

/home/albaforia/SVN/nativeclient/third_party/llvm-build/Release+Asserts/bin/clang -DHAVE_CONFIG_H -I. -I../../../src/binutils/gold -I../../../src/binutils/gold -I../../../src/binutils/gold/../include -I../../../src/binutils/gold/../elfcpp -DLOCALEDIR="\"/share/locale\"" -DBINDIR="\"/bin\"" -DTOOLBINDIR="\"/arm-pc-nacl/bin\"" -DTOOLLIBDIR="\"/arm-pc-nacl/lib\"" -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -frandom-seed=yyscript.o -Wno-extended-offsetof -Wno-absolute-value -Wno-unused-function -Wno-unused-const-variable -Wno-unneeded-internal-declaration -Wno-unused-private-field -Wno-format-security -MT yyscript.o -MD -MP -MF .deps/yyscript.Tpo -c -o yyscript.o yyscript.c yyscript.c:1:1: error: type specifier missing, defaults to 'int' [-Werror,-Wimplicit-int] main() { return 0; } ^~~~ 1 error generated. make[4]: *** [yyscript.o] Error 1

ответ

2

По умолчанию инструментальная цепочка PNaCl построена с загруженным двоичным кодом clang, поскольку автоматические сборщики Google используют Ubuntu 12.04, а gcc на этих системах не может создавать последние версии LLVM. Итак, есть 2 варианта: Если вы использовали Chromium's depot_tools, чтобы получить источники из собственного клиента, вы можете легко получить копию того же самого компилятора, который используют разработчики: из родительского каталога native_client запустите tools/clang/scripts/update.sh, который будет загружать и устанавливать clang в где toolchain_build_pnacl.py ожидает его. Как только он будет установлен, он будет автоматически обновляться с помощью Native Clients DEPS, если вы используете gclient от depot_tools.

В противном случае вы можете использовать систему gcc для компиляции инструментальной цепочки PNaCl с использованием опции --gcc. Это обязательно должно работать на Ubuntu 14.04, так как система, в которой мы разрабатываем PNaCl.

Как в стороне я начал еще один document, который имеет несколько более подробную информацию о процессе сборки (даже если его внимание не то, что вы заинтересованы в) и, конечно, есть -h флаг toolchain_build_pnacl.py и его источники.

+0

Спасибо, что помогли мне много. tools/clang/scripts/update.sh получает правильную версию clang! Но сборка все еще терпит неудачу. Даже используйте с -gcc вместо clang. – Albaforia

+0

Можете ли вы разместить сообщение об ошибке? На данный момент это совершенно другой вопрос из того, который вы изначально задали; Я не знаю, следует ли просто отметить это как ответ и начать новый, или просто изменить исходный вопрос или что ... – Derek

+0

Я обновил его на этот раз. И если эта проблема по-прежнему идет на другую, я сделаю для нее новый вопрос и ссылку на это. Спасибо за ваш совет. – Albaforia

1

Не могли бы вы опубликовать более подробную информацию о том, что ошибка? Вам, вероятно, придется немного прокручивать (ошибки чередуются с другими частями сборки, потому что они строятся параллельно). Чтобы помочь отладить это, вы также можете запустить toolchain_build/toolchain_build_pnacl.py по конкретным целям и уменьшить количество выполняемого здания, например. вы могли бы сделать:

toolchain_build/toolchain_build_pnacl.py llvm_x86_64_linux --verbose --install toolchain/linux_x86/pnacl_newlib 

FYI, когда вы повторно запустить toolchain_build/toolchain_build_pnacl.py скрипт вам не нужно повторно указать --sync и --clobber.

Вы также можете запустить команду make вручную при отладке проблемы. В любом случае мы хотели бы исправить проблему, с которой вы столкнулись!

+0

Благодарим за помощь. Я обнаружил, что это вызвано отсутствием компилятора llvm. Я редактировал свой вопрос с добавлением дополнительной информации об ошибке. – Albaforia

1

Чтобы использовать системный компилятор вместо компилятора от third_party/llvm_build/..., вы можете передать опцию --gcc сценарию сборки. Хотя, вряд ли вам удастся построить toolchain под Ubuntu 14.04.

Я использую Ubuntu 14.04 и для того, чтобы построить pnacl toolchain, я установил Ubuntu 12.04 chroot environment. Внутри него можно успешно построить набор инструментов, используя следующие команды:

# get sources for NaCl itself 
gclient config http://src.chromium.org/native_client/trunk/src/[email protected] --name native_client 
gclient sync -j16 

cd native_client 
# sync sources for binutils, llvm, etc. 
toolchain_build/toolchain_build_pnacl.py --verbose --sync-only 
# build and install toolchain 
toolchain_build/toolchain_build_pnacl.py --verbose --gcc --install install_dir 

PS: монтирование /proc, /dev, /dev/pts, /sys, /run, /run/shm, /tmp в мой CHROOT среду и все проходит гладко. Без установки некоторых из этих каталогов некоторые скрипты сборки могут потерпеть неудачу, хотя я не уверен в этом.

+0

Спасибо за вашу помощь :) И ... да, это по-прежнему не так, когда вы проходите мимо - gcc к нему, как вы сказали. Я поменяю попытку изменить свою систему на Ububtu 12.04 позже и снова построю ее. – Albaforia

+0

Я сделал несколько попыток изменить свою систему, чтобы она была похожа на ту, что вы описали. Но это все еще не работает. Не могли бы вы рассказать мне более конкретные детали вашей системы? В том числе аппаратное обеспечение, OS-система хоста и chroot-среды, или что-то может быть важно сказать. Заранее спасибо. – Albaforia

+0

Моя хост-система - Ubuntu 14.04 (amd64). Система Chroot - Ubuntu 12.04 (amd64). Процессор i7-2600, хотя я не думаю, что здесь важно. Трудно догадаться, что пошло не так в вашем случае без сообщений об ошибках. Может быть, вам не хватает пакетов, установленных в chroot. – Nikolai

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

  • Нет связанных вопросов^_^