Closed smokie-l closed 1 year ago
Однако при попытке обновиться до крайнего релиза версии 1.5 возникает ошибка при линковке:
/usr/bin/ld: src/fr_drv_ng/linux/armv7hf_le/libclassic_fr_drv_ng.so: undefined reference to `std::current_exception()@CXXABI_1.3.11' /usr/bin/ld: src/fr_drv_ng/linux/armv7hf_le/libclassic_fr_drv_ng.so: undefined reference to `std::__exception_ptr::exception_ptr::exception_ptr()@CXXABI_1.3.11' /usr/bin/ld: src/fr_drv_ng/linux/armv7hf_le/libclassic_fr_drv_ng.so: undefined reference to `std::__exception_ptr::exception_ptr::~exception_ptr()@CXXABI_1.3.11' /usr/bin/ld: src/fr_drv_ng/linux/armv7hf_le/libclassic_fr_drv_ng.so: undefined reference to `std::__exception_ptr::exception_ptr::swap(std::__exception_ptr::exception_ptr&)@CXXABI_1.3.11' /usr/bin/ld: src/fr_drv_ng/linux/armv7hf_le/libclassic_fr_drv_ng.so: undefined reference to `std::__exception_ptr::exception_ptr::exception_ptr(std::__exception_ptr::exception_ptr const&)@CXXABI_1.3.11' /usr/bin/ld: src/fr_drv_ng/linux/armv7hf_le/libclassic_fr_drv_ng.so: undefined reference to `std::rethrow_exception(std::__exception_ptr::exception_ptr)@CXXABI_1.3.11'
Ранее этот вопрос уже поднимался, но, вероятно, коллега ограничился запуском console_test_fr_drv_ng в отдельном процессе.
Это версия libstdc++, хочет более новую.
Более того, когда собираемся на актуальной версии происходит страшное:
/usr/bin/ld: onlinecashregister.o: in function `OnlineCashRegister::resultCode()': onlinecashregister.cpp:(.text+0x6c8): undefined reference to `QClassicFrDrvNg::Get_ResultCode() const' /usr/bin/ld: onlinecashregister.o: in function `OnlineCashRegister::resultCodeDescription()': onlinecashregister.cpp:(.text+0x6f0): undefined reference to `QClassicFrDrvNg::Get_ResultCodeDescription() const' /usr/bin/ld: onlinecashregister.o: in function `OnlineCashRegister::getDocumentNumber()': onlinecashregister.cpp:(.text+0x864): undefined reference to `QClassicFrDrvNg::Get_DocumentNumber() const' /usr/bin/ld: onlinecashregister.o: in function `OnlineCashRegister::getFiscalSign()': onlinecashregister.cpp:(.text+0x874): undefined reference to `QClassicFrDrvNg::Get_FiscalSign() const' /usr/bin/ld: onlinecashregister.o: in function `OnlineCashRegister::connected() const': onlinecashregister.cpp:(.text+0x8a8): undefined reference to `QClassicFrDrvNg::Get_Connected() const' ...
Это загадка. Не могу сказать что стало с оберткой.
Весь лог не привожу. Насколько я понимаю, сломались все обращения к
QClassicFrDrvNg
, хотя та же версия под mingw-x64 успешно линкуется без каких-либо ошибок. Вызов./console_test.sh -v
тоже почти успешно выполняется:ERROR: ld.so: object '/usr/lib/arm-linux-gnueabihf/libarmmem-${PLATFORM}.so' from /etc/ld.so.preload cannot be preloaded (internal error): ignored. console_test version: 1.6.0.199 cppbase version: 1.5.0.1098 boost version: 1_82
ну потому что подлинковывается в рантайме более новый libstdc++
lscpu
:Architecture: armv7l Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Thread(s) per core: 1 Core(s) per socket: 4 Socket(s): 1 Vendor ID: ARM Model: 3 Model name: Cortex-A72 Stepping: r0p3 CPU max MHz: 1800.0000 CPU min MHz: 600.0000 BogoMIPS: 108.00 Flags: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
uname -a
:Linux raspberrypi 5.10.63-v7l+ #1459 SMP Wed Oct 6 16:41:57 BST 2021 armv7l GNU/Linux
gcc -v
:Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/10/lto-wrapper Target: arm-linux-gnueabihf Configured with: ../src/configure -v --with-pkgversion='Raspbian 10.2.1-6+rpi1' --with-bugurl=file:///usr/share/doc/gcc-10/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-10 --program-prefix=arm-linux-gnueabihf- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --disable-libquadmath-support --enable-plugin --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-sjlj-exceptions --with-arch=armv6 --with-fpu=vfp --with-float=hard --disable-werror --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 10.2.1 20210110 (Raspbian 10.2.1-6+rpi1)
./libc.so.6
:GNU C Library (Debian GLIBC 2.31-13+rpt2+rpi1) stable release version 2.31. Copyright (C) 2020 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Compiled by GNU CC version 10.2.1 20210110. libc ABIs: UNIQUE ABSOLUTE
Напомню, что с версией 1.5.0 под _armv7hfle приведённых проблем нет. Подскажите, что мы делаем не так? Или проблема всё-таки с конкретными сборками библиотеки?
Да у вас всё так, просто нужно собрать под ваш тулчейн сборку. Дайте пожалуйста ссылку на дистрибутив (я так понял у вас raspbian) добавим спец сборку.
Спасибо за оперативность. Дистрибутив когда-то брали с оф.сайта: https://www.raspberrypi.com/software/operating-systems/ Сейчас там уже bullseye c новым ядром (32-битная версия). Если у вас получится собрать на актуальной версии системы, нас устроит, сможем обновиться.
Это загадка. Не могу сказать что стало с оберткой.
Кажется, это тоже связано со сборкой. Если Вам поможет, вот вывод strings libqclassic_fr_drv_ng.so
для версии 1.5.0:
__gmon_start__
_init
_fini
_ITM_deregisterTMCloneTable
_ITM_registerTMCloneTable
__cxa_finalize
libclassic_fr_drv_ng.so.1.4
libQt5Core.so.5
libstdc++.so.6
libm.so.6
libgcc_s.so.1
libpthread.so.0
libc.so.6
_ZN15QClassicFrDrvNg28HasCashControlLicenseChangedEb
_ZN15QClassicFrDrvNg20SwapBytesModeChangedEi
_ZN15QClassicFrDrvNg19Tax4NameFontChangedEi
_ZN15QClassicFrDrvNg15LineDataChangedE7QString
_ZN15QClassicFrDrvNg16Summ3FontChangedEi
_ZN15QClassicFrDrvNg15FontTypeChangedEi
_ZN15QClassicFrDrvNg19Tax1RateFontChangedEi
_ZN15QClassicFrDrvNg11GTINChangedE7QString
_ZN15QClassicFrDrvNg17DepartmentChangedEi
_ZN15QClassicFrDrvNg26CashControlPasswordChangedEj
_ZN15QClassicFrDrvNg18EKLZVersionChangedE7QString
_ZN15QClassicFrDrvNg30IBMLastBuyReceiptNumberChangedEi
_ZN15QClassicFrDrvNg29DepartmentSymbolNumberChangedEi
_ZN15QClassicFrDrvNg24Summ3StringNumberChangedEi
_ZN15QClassicFrDrvNg22MaxENQSendCountChangedEi
_ZN15QClassicFrDrvNg16Summ4FontChangedEi
_ZN15QClassicFrDrvNg26Tax4SumStringNumberChangedEi
_ZN15QClassicFrDrvNg14TimeStrChangedE7QString
_ZN15QClassicFrDrvNg18ECRSoftDateChangedE9QDateTime
_ZN15QClassicFrDrvNg18TagValueStrChangedE7QString
_ZN15QClassicFrDrvNg20ChangeSumFontChangedEi
_ZN15QClassicFrDrvNg17DataLengthChangedEi
...
PM_EjectingSlip
PM_WaitingSlipRemoval
PrinterSubmode
PSM_PaperPresent
PSM_PassivePaperAbsense
PSM_ActivePaperAbsense
PSM_AfterAvtivePaperAbsense
PSM_ReportPrintingInProgress
PSM_OperationPrintingInProgress
DeviceFunctionEnumeration
DFE_SkipAllPrinting
basic_string::append
Changed
default
unable to emit changedSignal
GCC: (Buildroot 2018.08-git-00595-g36855f5ce1) 8.1.0
aeabi
.shstrtab
.hash
.dynsym
.dynstr
.gnu.version
.gnu.version_r
.rel.dyn
.rel.plt
.init
.text
.fini
.rodata
.ARM.extab
.ARM.exidx
.eh_frame
.init_array
.fini_array
.data.rel.ro
.dynamic
.got
.data
.bss
.comment
.ARM.attributes
и для версии 1.6.0-13:
__gmon_start__
_init
_fini
_ITM_deregisterTMCloneTable
_ITM_registerTMCloneTable
__cxa_finalize
libclassic_fr_drv_ng.so.1.6
libQt5Core.so.5
libstdc++.so.6
libm.so.6
libgcc_s.so.1
libc.so.6
libqclassic_fr_drv_ng.so.1.4
GLIBC_2.4
$ORIGIN
GCC: (Buildroot 2018.08.4-dirty) 8.4.0
aeabi
.shstrtab
.gnu.hash
.dynsym
.dynstr
.gnu.version
.gnu.version_r
.rel.dyn
.rel.plt
.init
.text
.fini
.eh_frame
.init_array
.fini_array
.dynamic
.got
.data
.bss
.comment
.ARM.attributes
Ну и весит библиотека соответственно больше в старом релизе:
-rwxr-xr-x 1 pi pi 812K Oct 4 16:46 libqclassic_fr_drv_ng.so
против 1.6.0-13:
-rwxr-xr-x 1 pi pi 5.2K Oct 4 13:36 libqclassic_fr_drv_ng.so.1.4
Спасибо за оперативность. Дистрибутив когда-то брали с оф.сайта: https://www.raspberrypi.com/software/operating-systems/ Сейчас там уже bullseye c новым ядром (32-битная версия). Если у вас получится собрать на актуальной версии системы, нас устроит, сможем обновиться.
а вы попробуйте запустить на bulleye, должно завестись.
Здравствуйте. Да в том и беда, что были уже на 11ом. cat /etc/os-release
:
PRETTY_NAME="Raspbian GNU/Linux 11 (bullseye)"
NAME="Raspbian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=raspbian
ID_LIKE=debian
Имел ввиду, что версия ядра уже не 5.10, а 6.1.
Вот, что выводится на последней версии ОС.
gcc -v
:
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/10/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: ../src/configure -v --with-pkgversion='Raspbian 10.2.1-6+rpi1' --with-bugurl=file:///usr/share/doc/gcc-10/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-10 --program-prefix=arm-linux-gnueabihf- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --disable-libquadmath-support --enable-plugin --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-sjlj-exceptions --with-arch=armv6 --with-fpu=vfp --with-float=hard --disable-werror --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 10.2.1 20210110 (Raspbian 10.2.1-6+rpi1)
./libc.so.6
:
GNU C Library (Debian GLIBC 2.31-13+rpt2+rpi1+deb11u5) stable release version 2.31.
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 10.2.1 20210110.
libc ABIs: UNIQUE ABSOLUTE
При попытке собрать:
/usr/bin/ld: onlinecashregister.o: in function `OnlineCashRegister::resultCode()':
onlinecashregister.cpp:(.text+0x6c8): undefined reference to `QClassicFrDrvNg::Get_ResultCode() const'
...
/usr/bin/ld: src/fr_drv_ng/linux/armv7hf_le/libclassic_fr_drv_ng.so: undefined reference to `std::current_exception()@CXXABI_1.3.11'
/usr/bin/ld: src/fr_drv_ng/linux/armv7hf_le/libclassic_fr_drv_ng.so: undefined reference to `std::__exception_ptr::exception_ptr::exception_ptr()@CXXABI_1.3.11'
/usr/bin/ld: src/fr_drv_ng/linux/armv7hf_le/libclassic_fr_drv_ng.so: undefined reference to `std::__exception_ptr::exception_ptr::~exception_ptr()@CXXABI_1.3.11'
/usr/bin/ld: src/fr_drv_ng/linux/armv7hf_le/libclassic_fr_drv_ng.so: undefined reference to `std::__exception_ptr::exception_ptr::swap(std::__exception_ptr::exception_ptr&)@CXXABI_1.3.11'
/usr/bin/ld: src/fr_drv_ng/linux/armv7hf_le/libclassic_fr_drv_ng.so: undefined reference to `std::__exception_ptr::exception_ptr::exception_ptr(std::__exception_ptr::exception_ptr const&)@CXXABI_1.3.11'
/usr/bin/ld: src/fr_drv_ng/linux/armv7hf_le/libclassic_fr_drv_ng.so: undefined reference to `std::rethrow_exception(std::__exception_ptr::exception_ptr)@CXXABI_1.3.11'
Это версия libstdc++, хочет более новую.
Может с чем-то ещё связано? Если проблема с версией libstdc++, тогда не ясно, почему собранная на GCC 8.1 сборка для 1.5.0, вероятно, с той же версией libstdc++, без проблем заводится в окружении с GCC 10.2.1.
Добрый день. Пока остаёмся на старой версии, правильно понял?
да, пока да. отпишусь как выйдет обновление, там будет много нового в том числе поправлена видимость символов для сборки qclassic
На новый функционал пока не претендуем, но обновиться и поправить старые ошибки нам уже пора бы. Ждём, спасибо!
В свежем релизе добавлен вариант сборки под ubuntu 20.04 armhf кроме того qclassic теперь публичный
Здравствуйте! Спасибо, забрали новый qclassic. Со сборкой fr_drv_ng_ubuntu_arm_linux_gnueabihf_1.6.0-14-g0fbabb3.zip (про неё речь?) теперь линковка успешно проходит и приложение работает с кассой!
Добрый день! Уже почти 4 года работаем через ваш драйвер в проекте под Qt. Спасибо за сборку под armhf, очень выручает! Последняя версия, до которой мы обновлялись, была 1.5.0. И судя по описаниям следующих версий, некоторые из наших проблем уже решены в драйвере.
Однако при попытке обновиться до крайнего релиза версии 1.5 возникает ошибка при линковке:
Ранее этот вопрос уже поднимался, но, вероятно, коллега ограничился запуском console_test_fr_drv_ng в отдельном процессе.
Более того, когда собираемся на актуальной версии происходит страшное:
Весь лог не привожу. Насколько я понимаю, сломались все обращения к
QClassicFrDrvNg
, хотя та же версия под mingw-x64 успешно линкуется без каких-либо ошибок. Вызов./console_test.sh -v
тоже почти успешно выполняется:lscpu
:uname -a
:gcc -v
:./libc.so.6
:Напомню, что с версией 1.5.0 под _armv7hfle приведённых проблем нет. Подскажите, что мы делаем не так? Или проблема всё-таки с конкретными сборками библиотеки?