Нужна подробная инструкция по кросс-компиляции ActiveMQ-cpp
на ubuntu 15 64bit
для ARM 32 bit
. Компилятор arm-linux-gnueabihf-g++. Что кросскомпилировать прежде (необходимо и достаточно), с какими флагами? Гоогл дает только отрывочные инструкции.
Пока имею вот это:
Конфигурация для сборки activemq-cpp
из исходников:
./configure --prefix=$HOME/usr --with-sysroot=/home/rishat/olimex CXX=/usr/bin/arm-linux-gnueabihf-g++
в результате получаю:
... (много строк)
checking size of wchar_t... configure: error: in `/home/rishat/Source/activemq-cpp-library-3.9.4_arm':
configure: error: cannot compute sizeof (wchar_t)
See `config.log' for more details
Содержимое config.log по этому вопросу:
configure:17217: result: no
configure:17235: checking for wchar_t
configure:17235: /usr/bin/arm-linux-gnueabihf-g++ -c -g -O2 conftest.cpp >&5
configure:17235: $? = 0
configure:17235: /usr/bin/arm-linux-gnueabihf-g++ -c -g -O2 conftest.cpp >&5
conftest.cpp: In function 'int main()':
conftest.cpp:61:14: error: expected primary-expression before 'wchar_t'
if (sizeof ((wchar_t)))
^
conftest.cpp:61:14: error: expected ')' before 'wchar_t'
conftest.cpp:62:14: error: expected ')' before ';' token
return 0;
^
conftest.cpp:62:14: error: expected ')' before ';' token
configure:17235: $? = 1
configure: failed program was:
| /* confdefs.h */
Все необходимые пакеты устанавливал "нормальным" способом:
sudo apt-get install autoconf
sudo apt-get install libtool-bin
sudo apt-get install libcppunit-dev
sudo apt-get install libapr1-dev
Подозреваю, что и их надо тоже кросс-компилить, но хотелось бы иметь необходимый минимум пакетов и флагов, чтобы не увязнуть в этом окончательно
Исходники activemq-cpp
: http://activemq.apache.org/cms/download.html
Исходники apr
: https://apr.apache.org/download.cgi
Шаг 1. Кросс-компиляция apr-1:
Дальше идет описание грязного хака, но без него не получилось
Разархивируем в папку apr-1.5.2_local
, стандартно компилируем (под локальную машину):
./configure make
Внимание, не инсталим! Нам теперь понадобятся файлы из apr-1.5.2_local/tools
в дальнейшем (в этом и заключается "грязный хак")
Разархивируем снова в папку apr-1.5.2_arm
Конфигурю с помощью следующих флагов (если кто найдет более оптимальный набор флагов, напишите коммент):
./configure --prefix=$HOME/arm/usr --with-sysroot=$HOME/olimex --build=x86_64-pc-linux-gnu --host=arm-linux CPPFLAGS=-I$HOME/arm/usr/include LDFLAGS=-L$HOME/arm/usr/lib CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ \ ac_cv_file__dev_zero="yes" \ ac_cv_func_setpgrp_void="yes" \ apr_cv_process_shared_works="yes" \ apr_cv_mutex_robust_shared="no" \ apr_cv_tcp_nodelay_with_cork="yes" \ ac_cv_sizeof_struct_iovec="8" \ apr_cv_mutex_recursive="yes"
Копируем файлы из apr-1.5.2_local/tools
в apr-1.5.2_arm/tools
Пояснение: Дело в том, что в процессе make'а генерируется и выполняется бинарный файл tools/gen_test_char
, а на 64-битной машине 32-битная бинарка не распознается и не выполняется. Если кто знает, как обойти это скользкое место, прошу отписаться.
Выполняю make
со своим набором компиляторов (кажется, тут нужен только си, без плюсов, но не помешал):
make CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++
sudo make install
(заинсталил в $HOME/arm/usr)
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть две формы: одна - главная рабочая область, вторая - splash screenКод такой(основные функции: таймер и конструктор главной формы):
Здравствуйте, помогите пожалуйста, проблема в функции getline(),которая принимает 2 аргумента: Входной поток, из которого следует извлечь строку...
Вопрос предельно прост: надо посчитать количество единиц в двоичном представлении числа за О(1)Линии и логарифмы даже не предлагайте