Как жестко закодировать / изменить результаты теста из autoconf при кросс-компиляции NTP для QNX? - PullRequest
0 голосов
/ 07 июня 2019

Я пытаюсь кросс-компилировать NTP для armv7-unknown-nto-qnx из i686-pc-linux-gnu.

Пока что я создал следующую команду:

CC=/opt/qnx660/host/linux/x86/usr/bin/qcc LD=/opt/qnx660/host/linux/x86/usr/bin/ntoarmv7-ld  CFLAGS="-static -Vgcc_ntoarmv7le" ../configure --host=armv7-unknown-nto-qnx --build=i686-pc-linux-gnu --prefix=$(pwd)/output --with-yielding-select=yes

Кажется, это помогает мне пройти большую часть пути; однако компилятор заканчивает тем, что бросил ../../../sntp/libevent/signal.c:255:17: error: 'SA_RESTART' undeclared (first use in this function). В этом и каждом другом экземпляре SA_RESTART заданная в конфигурации константа HAVE_SIGACTION if определяет код проблемы. Глядя в config.log, я нашел это:

configure:24569: checking for sigaction
17307configure:24569: /opt/qnx660/host/linux/x86/usr/bin/qcc -std=gnu99 -std=gnu99 -o conftest -static -Vgcc_ntoarmv7le   conftest.c -lsocket  >&5
17308configure:24569: $? = 0
17309configure:24569: result: yes

Я думаю, что это ложное срабатывание.

Я ищу либо способ исправить тесты ./configure, дополнительно указав мою среду, либо способ указать результат теста.

Мне известно, что я могу просто изменить config.h после автоматического тестирования, но это не является правильным решением для моего приложения.

Ответы [ 2 ]

0 голосов
/ 09 июня 2019

Чтобы отключить проверку функции для sigaction, перед вызовом configure экспортируйте ac_cv_func_sigaction = no в вашу среду.

Однако в настройке нет ничего плохого - QNX поддерживает sigaction () и, таким образом, настраиваетправильно возвращает «да».Это ошибка в libevent, когда предполагается, что все операционные системы, поддерживающие sigaction (), также поддерживают SA_RESTART, что неверно в QNX.sigaction используется в других местах в программном обеспечении ntp, и полное отключение всех вызовов sigaction может иметь непредвиденные побочные эффекты.Вместо этого я предлагаю вам рассмотреть возможность установки libevent для правильной поддержки QNX;прекрасные люди в QNX предоставили патч через свое дерево pkgsrc, доступно здесь .

0 голосов
/ 07 июня 2019

SA_RESTART не поддерживается в QNX.Поддерживаются только SA_NOCLDSTOP и SA_SIGINFO.

Для получения дополнительной информации см. Эту ссылку: http://www.qnx.com/developers/docs/6.5.0/index.jsp?topic=%2Fcom.qnx.doc.neutrino_lib_ref%2Fs%2Fsigaction.html

...