2013-04-07 3 views
1

Я хочу скомпилировать драйвер hello_world с помощью PNacl; единственная проблема заключается в том, что я не знаю, какие параметры передать компилятору.Google pnacl: как использовать компилятор/компоновщик

Напомним, что целью здесь является переход от .cc (файла C++) к .bc (некоторый формат llvm, о котором я мало знаю) и оттуда в .pexe.

Вот что я пытаюсь:

$ TC_PATH=/opt/nacl/pepper_26/toolchain/linux_x86_pnacl/host_x86_64/bin 
$ $(TC_PATH)/clang++ hello_world.cc -o hello_world.bc -I/opt/nacl/pepper_26/include 

, что много работы. Теперь, шаг связь не удается:

$ $(TC_PATH)/clang++ hello_world.bc -o hello_world 
/tmp/hello_world-l8UCWM.o: file not recognized: File format not recognized 

Если я

$ $(TC_PATH)/clang++ hello_world.bc -o hello_world.pexe --verbose 

Я вижу, что водитель пытается связать с моей системой линкера, который, конечно, не будет работать:

... 
"/usr/bin/ld" --eh-frame-hdr " 
... 

Я пытался копать некоторые Make-файлы, используя эту вещь, но до сих пор я нашел только this one и кажется устаревшим. Какие флаги я должен передать инструментам?

ответ

3

Как вы упомянули в своем ответе, в файлах Makefile в SDK есть поддержка для вызова компилятора pnacl. Все пользовательские инструменты находятся в $(SDK_ROOT)/toolchain/linux_x86_pnacl/newlib/bin или его эквивалент на Windows или Mac. При использовании, как обычный драйвер компилятора/компоновщика pnacl-clangpnacl-clang++), при создании компиляции и переносных исполняемых файлов (называемых файлами .pexe) будут созданы переносные объектные файлы. Вы можете использовать инструмент pnacl-translate, чтобы перевести pexe на исполняемый файл x86-64, x86-32 или arm native client (nexe), который можно использовать так же, как файлы nexe, созданные nacl-gcc. Скоро будет также поддержка прямого использования pexe-файлов для перевода в браузере.

0

Хорошо, вот что я нашел. Сначала новые Makefiles, распространяемые с SDK, точно знают, как делать всю сборку ... Я их не нашел. В основном вызываемый clang ++ - это $(SDK_ROOT)/toolchain/linux_x86_pnacl/newlib/bin/pnacl-clang++ вместо host_x86_64.

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