Compilation and installation questions and stories
xander
Posts: 9 Joined: 05 Oct 2015, 14:36
Post
by xander » 06 Oct 2015, 07:20
Здравствуйте! Мы работаем с платформой RLX (вариант MIPS Realtek). В GCC данной архитектуры нет поддержки атомарных операций. Соответственно, сборка валится, ругаясь несколько раз подобным образом:
Code: Select all
undefined reference to "__sync_sub_and_fetch_4"
При замене типов целевых переменных на uint_16 возникает такая же ошибка, но уже с двойкой (два байта). Возможно ли предусмотреть обходной вариант без использования этих функций?
P. S. Проверял на стабильной 1.9.0. С git то же самое.
Dmitry
Администратор
Posts: 954 Joined: 09 Oct 2014, 10:06
Post
by Dmitry » 09 Oct 2015, 08:30
эта платформа многоядерная/многопроцессорная ?
xander
Posts: 9 Joined: 05 Oct 2015, 14:36
Post
by xander » 09 Oct 2015, 14:54
Нет, одноядерный 32-битный MIPS в роутерах. Ищем реализацию PPTP/L2TP-серверов.
Code: Select all
# cat /proc/cpuinfo
system type : RTL8672
processor : 0
cpu model : 56322
BogoMIPS : 599.65
tlb_entries : 64
mips16 implemented : yes
Dmitry
Администратор
Posts: 954 Joined: 09 Oct 2014, 10:06
Post
by Dmitry » 13 Oct 2015, 07:48
тогда можно сделать функции-заглушки
xander
Posts: 9 Joined: 05 Oct 2015, 14:36
Post
by xander » 13 Oct 2015, 11:15
Можно подробнее? Я никогда не сталкивался с __sync_* операциями и не знаю, чем замещать их функционал.
Dmitry
Администратор
Posts: 954 Joined: 09 Oct 2014, 10:06
Post
by Dmitry » 13 Oct 2015, 13:17
патч приложен
в конфиге важно:
[core]
thread-count=1
Attachments
sync.patch.gz
(383 Bytes) Downloaded 109 times
xander
Posts: 9 Joined: 05 Oct 2015, 14:36
Post
by xander » 13 Oct 2015, 15:14
Отлично, благодарю!
xander
Posts: 9 Joined: 05 Oct 2015, 14:36
Post
by xander » 15 Oct 2015, 15:30
Удалось собрать утилиту, но при запуске ошибка:
Code: Select all
accel-pppd: can't load library 'libtriton.so'
Собираем так:
Code: Select all
ACCEL_PPP_CONF_OPT = -DCMAKE_EXE_LINKER_FLAGS="$(TARGET_LDFLAGS) -Wl,-rpath,/usr/lib/accel-ppp" -DKDIR=${LINUX26_DIR}
define ACCEL_PPP_CONFIGURE_CMDS
(cd ${@D} && \
rm -f CMakeCache.txt && \
rm -rf build && mkdir build && cd build && \
$(HOST_DIR)/usr/bin/cmake ${ACCEL_PPP_CONF_OPT} ${@D} \
-DCMAKE_TOOLCHAIN_FILE="$(BASE_DIR)/toolchainfile_accel-ppp.cmake" \
-DCMAKE_INSTALL_PREFIX="/usr" \
)
endef
define ACCEL_PPP_BUILD_CMDS
${MAKE} -C ${@D}/build
endef
Можно ли как-то локализовать проблему?
Dmitry
Администратор
Posts: 954 Joined: 09 Oct 2014, 10:06
Post
by Dmitry » 16 Oct 2015, 07:01
как установка осуществляется ?
xander
Posts: 9 Joined: 05 Oct 2015, 14:36
Post
by xander » 16 Oct 2015, 07:16
Code: Select all
${MAKE} -C ${@D}/build install DESTDIR=$(TARGET_DIR)
В итоге после установки на устройстве получаем следующую структуру файлов:
Code: Select all
/usr/bin/accel-cmd
/usr/sbin/accel-pppd
/usr/lib/accel-ppp/*.so
Пробовал менять порядок линковки, но ругается все равно именно на libtriton. LIB_SUFFIX тоже пробовал раздефайнить, не помогает. Открывал итоговый accel-pppd hex-редактором, там зашит нормальный путь "/usr/lib/accel-ppp".