Boost & собственный toolset
От: Stepkh  
Дата: 12.12.06 17:07
Оценка:
Привет всем!

Кто-нибуль пробовал компилировать boost под собственный toolset?

Не те, что входят в стандартный перечень. Исследуя документацию я натолкнулся на то, какие перемнные окружения надо
устанавливать. но благополучно их потерял и не нашел.

На вопрос зачем надо -отвечаю: есть кросс-компилятор, со всем прибамбасами, по сути он тот же gcc, но...
bjam использует, например, /usr/bin/objcopy вместо $(CROSS_COMPILE_PATH)/$(CROSS_COMPILE)-objcopy
и т.д.
как заставить его использовать нужный набор утилит? или где посмотреть как настроить toolset?
Re: Boost & собственный toolset
От: alexei_s  
Дата: 29.01.08 11:01
Оценка:
Здравствуйте, Stepkh, Вы писали:

S>Привет всем!


S>Кто-нибуль пробовал компилировать boost под собственный toolset?


S>Не те, что входят в стандартный перечень. Исследуя документацию я натолкнулся на то, какие перемнные окружения надо

S>устанавливать. но благополучно их потерял и не нашел.

S>На вопрос зачем надо -отвечаю: есть кросс-компилятор, со всем прибамбасами, по сути он тот же gcc, но...

S>bjam использует, например, /usr/bin/objcopy вместо $(CROSS_COMPILE_PATH)/$(CROSS_COMPILE)-objcopy
S>и т.д.
S>как заставить его использовать нужный набор утилит? или где посмотреть как настроить toolset?

Занимаюсь этой же проблемой, удалось достигнуть успехов в этом?
Re[2]: Boost & собственный toolset
От: alexei_s  
Дата: 29.01.08 13:27
Оценка:
Удалось собрать под платформу mips путем подмены стандартных компиляторов, линковщиков на кросс-версии.
Однако смущает что не перебивал glibc и т.п.
Посреди сборки выскочило несколько ошибок (похоже ассемблера) но вроде собралось.
Re[3]: Boost & собственный toolset
От: _vvs Россия  
Дата: 31.01.08 12:48
Оценка:
Здравствуйте, alexei_s, Вы писали:

> Посреди сборки выскочило несколько ошибок (похоже ассемблера) но вроде собралось.


Не страшно потом пользоваться такой сборкой!?
Re[4]: Boost & собственный toolset
От: alexei_s  
Дата: 31.01.08 20:33
Оценка:
Здравствуйте, _vvs, Вы писали:

_>Здравствуйте, alexei_s, Вы писали:


>> Посреди сборки выскочило несколько ошибок (похоже ассемблера) но вроде собралось.


_>Не страшно потом пользоваться такой сборкой!?


страшно, поэтому вопрос по-прежнему открыт
Re[5]: Boost & собственный toolset
От: Sanik Россия http://sergeysthoughts.blogspot.com/
Дата: 01.02.08 00:24
Оценка:
Есть рассылка boost-build в которой я уже добивался ответа на подобный вопрос


Основная идея в том чтобы указать системе bjam путь до правильного компилера
"
Sure... But the logic that gcc.jam uses to determine which "ar" to use
goes something like this:

1. Use the ar program specified in the <archiver> option.
2. Use the "ar" program in the bin directory of the given g++.
3. Use the "ar" program in the system search path.

So if you use the common cross-compile setup of building binutils into a
tree localized for the specific target machine, i.e. in which you would
have a bin/ar and bin/g++, BBv2 would automatically work with a simple:

using gcc : : /path/to/arm-linux-cross-gcc/bin/g++ ;
"
http://lists.boost.org/boost-build/2007/11/17937.php

Все указанное выше справедливо для последнего буста с BBv2.

Кроме того для 1.33.1 (BBv1) на Linux машине с кросс компилером можно было делать так (я так делал по шагам)

1. Change dir where you unpack boost archive (for example: cd /home/sanik/boost_1_33_1
2. ./configure --with-libraries=thread
3. Edit result Makefile and add BJAM_CONFIG=-sGCC_ROOT_DIRECTORY=[path to cross compiler], e.g. BJAM_CONFIG=-sGCC_ROOT_DIRECTORY=/usr/crosstool/gcc-arm-iwmmxt/gcc-3.3.6-glibc-2.3.2/arm-linux/arm-linux
4. run “make”

HTH,
Sergey Nikulov

Здравствуйте, alexei_s, Вы писали:

_>Здравствуйте, _vvs, Вы писали:


_>>Здравствуйте, alexei_s, Вы писали:


>>> Посреди сборки выскочило несколько ошибок (похоже ассемблера) но вроде собралось.


_>>Не страшно потом пользоваться такой сборкой!?


_>страшно, поэтому вопрос по-прежнему открыт
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[6]: Boost & собственный toolset
От: alexei_s  
Дата: 01.02.08 07:07
Оценка:
Здравствуйте, Sanik, Вы писали:

S>Основная идея в том чтобы указать системе bjam путь до правильного компилера


я так и сделал — подменил системные:ar, as, g++, ld, ranlib на свои, все скомпилировалось, но посредине выскакивали ошибки, как я понял ассемблера
Смущает то, что есть еще кросс-библиотеки (libgcc, libstdc++ и т.п.), которые я нигде не подменял и не указывал. Т.е. по идее он мог взять стандартные системные (хотя как тогда отработал линковщик?)
вообщем вопрос библиотек как раз и волнует
Re[7]: Boost & собственный toolset
От: Sanik Россия http://sergeysthoughts.blogspot.com/
Дата: 01.02.08 08:21
Оценка:
Вы сами собирали cross compiler?

Идея в том что он собирается со всеми необходимыми библиотеками.

Например, структура директорий приблизительно выглядит так

gcc-3.3.6-glibc-2.3.2
|-> arm-linux
|->arm-linux -> bin -> здесь лежат файлы без префикса — СЮДА НАДО ПРОСТО УКАЗАТЬ ПУТЬ А НЕ ПОДМЕНЯТЬ ЧТО-ТО СИСТЕМНОЕ
| |----> lib -> здесь библиотеки для target платформы
|->bin -> здесь лежат файлы вида arm-linux-gcc (т.е. с префиксом arm-linux)

...

BTW,
Вообще было бы неплохо, если бы вы указали (версию буста, и конкретные ошибки при сборке)
А то ведь я могу гадать (на кофейной гуще) до бесконечности

С уважением,
Сергей

Здравствуйте, alexei_s, Вы писали:

_>Здравствуйте, Sanik, Вы писали:


S>>Основная идея в том чтобы указать системе bjam путь до правильного компилера


_>я так и сделал — подменил системные:ar, as, g++, ld, ranlib на свои, все скомпилировалось, но посредине выскакивали ошибки, как я понял ассемблера

_>Смущает то, что есть еще кросс-библиотеки (libgcc, libstdc++ и т.п.), которые я нигде не подменял и не указывал. Т.е. по идее он мог взять стандартные системные (хотя как тогда отработал линковщик?)
_>вообщем вопрос библиотек как раз и волнует
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[8]: Boost & собственный toolset
От: alexei_s  
Дата: 01.02.08 08:41
Оценка:
Здравствуйте, Sanik, Вы писали:

S>Вы сами собирали cross compiler?

нет уже установлен

S>Например, структура директорий приблизительно выглядит так


S>gcc-3.3.6-glibc-2.3.2

S>|-> arm-linux
S> |->arm-linux -> bin -> здесь лежат файлы без префикса — СЮДА НАДО ПРОСТО УКАЗАТЬ ПУТЬ А НЕ ПОДМЕНЯТЬ ЧТО-ТО СИСТЕМНОЕ
S> | |----> lib -> здесь библиотеки для target платформы
S> |->bin -> здесь лежат файлы вида arm-linux-gcc (т.е. с префиксом arm-linux)

да именно так

S>Вообще было бы неплохо, если бы вы указали (версию буста, и конкретные ошибки при сборке)

последняя 1.34

подмена заключалась в следующем: я временно убрал системные (g++ , ld, и т.п.) из /usr/bin, и создал вместо них симлинки на arm-linux-gcc и т.п.
после этого стандартный bjam --toolset=gcc


S>Идея в том что он собирается со всеми необходимыми библиотеками.

т.е. при сборке буста кросс-версии ar, as, g++, ld, ranlib — являются необходимыми и достаточными? ничто другое не нужно?
Re[6]: Boost & собственный toolset
От: alexei_s  
Дата: 01.02.08 10:28
Оценка:
Здравствуйте, Sanik, Вы писали:

S>Есть рассылка boost-build в которой я уже добивался ответа на подобный вопрос



S>Основная идея в том чтобы указать системе bjam путь до правильного компилера

S> using gcc : : /path/to/arm-linux-cross-gcc/bin/g++ ;

сделал так, опять компиляция идет, но выскакивают ошибки:

gcc.compile.c++ /путь/boost/bin.v2/libs/wave/build/gcc-3.2.3/debug/link-static/cpplexer/re2clex/cpp_re.o
/tmp/ccHyheT8.s: Assembler messages:
/tmp/ccHyheT8.s:2674: Error: Branch out of range
/tmp/ccHyheT8.s:2680: Error: Branch out of range
/tmp/ccHyheT8.s:2686: Error: Branch out of range
..........
много таких
........
"/opt/mipstools/mips-unknown-linux-gnu/bin/g++" -ftemplate-depth-128 -O0 -fno-inline -w -g -DBOOST_ALL_NO_LIB=1 -I"." -c -o "/instr_env/boost-mips/boost/bin.v2/libs/wave/build/gcc-3.2.3/debug/link-static/cpplexer/re2clex/cpp_re.o" "libs/wave/src/cpplexer/re2clex/cpp_re.cpp"

...failed gcc.compile.c++ /instr_env/boost-mips/boost/bin.v2/libs/wave/build/gcc-3.2.3/debug/link-static/cpplexer/re2clex/cpp_re.o...
...skipped <p/instr_env/boost-mips/boost/bin.v2/libs/wave/build/gcc-3.2.3/debug/link-static>libboost_wave-gcc32-d-1_34_1.a(clean) for lack of <p/instr_env/boost-mips/boost/bin.v2/libs/wave/build/gcc-3.2.3/debug/link-static>cpplexer/re2clex/cpp_re.o...
...skipped <p/instr_env/boost-mips/boost/bin.v2/libs/wave/build/gcc-3.2.3/debug/link-static>libboost_wave-gcc32-d-1_34_1.a for lack of <p/instr_env/boost-mips/boost/bin.v2/libs/wave/build/gcc-3.2.3/debug/link-static>cpplexer/re2clex/cpp_re.o...
...skipped <pstage/lib>libboost_wave-gcc32-d-1_34_1.a for lack of <p/instr_env/boost-mips/boost/bin.v2/libs/wave/build/gcc-3.2.3/debug/link-static>libboost_wave-gcc32-d-1_34_1.a...

.......
в конце
...failed updating 4 targets...
...skipped 16 targets...
...updated 1745 targets...

т.е. я так понял это проблемы с библ. wave, однако в итоге появились ее либы:
libboost_wave-gcc32-1_34_1.a
libboost_wave-gcc32-1_34_1.so
libboost_wave-gcc32-1_34_1.so.1.34.1
libboost_wave-gcc32.a
libboost_wave-gcc32-mt-1_34_1.a
libboost_wave-gcc32-mt-1_34_1.so
libboost_wave-gcc32-mt-1_34_1.so.1.34.1
libboost_wave-gcc32-mt.a
libboost_wave-gcc32-mt.so
libboost_wave-gcc32.so
Re[7]: Boost & собственный toolset
От: Sanik Россия http://sergeysthoughts.blogspot.com/
Дата: 04.02.08 00:14
Оценка:
Здравствуйте, alexei_s, Вы писали:

Это вообщем-то старый баг gcc для MIPS (что-то связанное с оптимизацией)
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11716
Возможно собрав более свежый cross compiler поможет избавиться от этой ошибки.
Однако есть огромное сомнение что boost::wave вообще понадобиться Вам на MIPS если это конечно не ключевая библиотека в вашем продукте (тогда см. выше)
И как следстивие на его ошибки можно не заморачиваться

HTH,
Sergey Nikulov

_>сделал так, опять компиляция идет, но выскакивают ошибки:


_>gcc.compile.c++ /путь/boost/bin.v2/libs/wave/build/gcc-3.2.3/debug/link-static/cpplexer/re2clex/cpp_re.o

_>/tmp/ccHyheT8.s: Assembler messages:
_>/tmp/ccHyheT8.s:2674: Error: Branch out of range
_>/tmp/ccHyheT8.s:2680: Error: Branch out of range
_>/tmp/ccHyheT8.s:2686: Error: Branch out of range
_>..........
_>много таких
_>........





_> "/opt/mipstools/mips-unknown-linux-gnu/bin/g++" -ftemplate-depth-128 -O0 -fno-inline -w -g -DBOOST_ALL_NO_LIB=1 -I"." -c -o "/instr_env/boost-mips/boost/bin.v2/libs/wave/build/gcc-3.2.3/debug/link-static/cpplexer/re2clex/cpp_re.o" "libs/wave/src/cpplexer/re2clex/cpp_re.cpp"


_> ...failed gcc.compile.c++ /instr_env/boost-mips/boost/bin.v2/libs/wave/build/gcc-3.2.3/debug/link-static/cpplexer/re2clex/cpp_re.o...

_> ...skipped <p/instr_env/boost-mips/boost/bin.v2/libs/wave/build/gcc-3.2.3/debug/link-static>libboost_wave-gcc32-d-1_34_1.a(clean) for lack of <p/instr_env/boost-mips/boost/bin.v2/libs/wave/build/gcc-3.2.3/debug/link-static>cpplexer/re2clex/cpp_re.o...
_> ...skipped <p/instr_env/boost-mips/boost/bin.v2/libs/wave/build/gcc-3.2.3/debug/link-static>libboost_wave-gcc32-d-1_34_1.a for lack of <p/instr_env/boost-mips/boost/bin.v2/libs/wave/build/gcc-3.2.3/debug/link-static>cpplexer/re2clex/cpp_re.o...
_> ...skipped <pstage/lib>libboost_wave-gcc32-d-1_34_1.a for lack of <p/instr_env/boost-mips/boost/bin.v2/libs/wave/build/gcc-3.2.3/debug/link-static>libboost_wave-gcc32-d-1_34_1.a...

_>.......

_>в конце
_> ...failed updating 4 targets...
_> ...skipped 16 targets...
_> ...updated 1745 targets...

_>т.е. я так понял это проблемы с библ. wave, однако в итоге появились ее либы:

_>libboost_wave-gcc32-1_34_1.a
_>libboost_wave-gcc32-1_34_1.so
_>libboost_wave-gcc32-1_34_1.so.1.34.1
_>libboost_wave-gcc32.a
_>libboost_wave-gcc32-mt-1_34_1.a
_>libboost_wave-gcc32-mt-1_34_1.so
_>libboost_wave-gcc32-mt-1_34_1.so.1.34.1
_>libboost_wave-gcc32-mt.a
_>libboost_wave-gcc32-mt.so
_>libboost_wave-gcc32.so
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[8]: Boost & собственный toolset
От: alexei_s  
Дата: 05.02.08 19:36
Оценка:
Здравствуйте, Sanik, Вы писали:

S>Здравствуйте, alexei_s, Вы писали:


S>Это вообщем-то старый баг gcc для MIPS (что-то связанное с оптимизацией)

S>http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11716
S>Возможно собрав более свежый cross compiler поможет избавиться от этой ошибки.
да, нужно попробовать
S>Однако есть огромное сомнение что boost::wave вообще понадобиться Вам на MIPS
на 100% верно
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.