Binary executable environment requirements

// Expert user has replied.
V Vedsatx Saddvv 1 year 5 months ago
83 4 0

A Zebra newbie here. I could not find anything in the Linux SDK Guide. Other than the actual binary file(s), what is required to be installed on the computer running executable files that were derived from Zebra's sample corescanner console source code?

Details:
I adapted the corescanner console sample source code on an Ubuntu machine (RPi 4 with Java and Zebra SDK installed) to create what I hoped would be three (semi?) stand-alone binary files that will be launched by the subsystem's proof-of-concept control computer (for now, a Raspberry Pi 3B).

The three binary files, derived from the corescanner console, 1) enable the scanner, 2) read/transmit barcodes, and 3) disable the scanner (MS4717). When I attempted to launch the "enable" or "disable" executable on the control computer (without Java or Zebra's SDK), I got "error while loading shared libraries: libcs_client.so: cannot open shared object file: No such file or directory".

The SDK guide makes no mention of what is required in the final installation environment (e.g. Java, drivers…). Thought of simply loading the one file, but wasn't sure (since it is looking for "shared libraries") if it will then ask for another 3 to 500 (or more) files. Searching here for previous discussions on "libcs_client.so" I got zero hits. Any insight on what I am (actually, the proof of concept control computer is) missing?

Luis

Please register or login to post a reply

4 Replies

S Sean Kennedy

Hi Luis.

A quick question if possible - the Linux Solution you are working with running the Ubuntu image for Raspberry PI
Is this Pi-based solution using a 64-bit Runtime - or a 32-bit runtime? And is the Ubuntu ( Armish )you are working with, the compatible version as listed in the matrix on this Support portal here:

https://www.zebra.com/us/en/support-downloads/software/developer-tools/…

You indicated that the Target may be a RPi 3B (32-bit) - so my reasons for aksing this is to be sure that the support for the Device and the Target Runtime is the correct one and that you have the correct support for the Specific Scanner in question? ( Is your MS4717 - supported by the Linux Armish 32-bit solution?).

FYI It might not - this link:
https://www.zebra.com/us/en/support-downloads/oem/oem-engines/ms4717.ht…
Does not show the Linux SDK as a possible option. ( I might add how vague this is the MS4717 is mentioned in the Linux SDK release notes as a bugfix. but it does not specify for what target platform that support is part of. )
I think I would suggest testing the MS4717 with an Intel 32/64-bit supported Ubuntu and see if the Intel Version works with this MS4717 before testing out the Armish on Raspberry Pi platforms.

Sincerely. -sean

S Sean Kennedy

Thanks for that Luis.
As you indicate that aarch64 on your RPi 4 - and the MS4717 work fine on the Development Machine.

The Bullseye on the 3B give me pause, I know you put 64-bit on (aarch64 - this is correct 64-bit ARM7 (armish) platform)
But I cannot speak to Bullseye filesystem / softlinks being consistent to what the Ubuntu dev platform uses.

I found this using a Google search for "works on Ubuntu on ARM Raspberry pi not on Bullseye"
https://forums.raspberrypi.com/viewtopic.php?t=325414

Is the 3B Bullseye a fresh install, or an upgrade from Buster? ( Just spitballing options for you here )

L Luis Melendez

Back from the Thanksgiving break and would like to make some more progress running the three output/executable files, and sorting out the necessary installation environment. Do you need more information? Is the question too vague to help sort out what I need to look into?

Luis

L Luis Melendez

Thanks for the follow up, Sean. If I understand your question correctly (not clear exactly what you refer to with "runtime" or "Armish"), both the Development (Ubuntu) and Test (Raspberry Pi OS) environments are 64-bit.

Initially the Test machine was set up for 32-bit, and we got the error 'bash: ./program: cannot execute binary file: Exec format error". We then reconfigured the Test machine (hardware and OS) to 64-bit and got the error "error while loading shared libraries: libcs_client.so: cannot open shared object file: No such file or directory", and don't know what to make of the message.

If it help clarify things, running "lscpu" on both machines reports "aarch64" as the architecture.

Here's a little more detail on the two setups:
1) Development machine: RPi 4 with Ubuntu 22.04.01 LTS, Linux SDK (zebra-scanner-corescanner_4.4.1-28_arm64.deb) and Java (18.0.1.1)
- The version of Ubuntu we are using is one major release higher (22.x vs 21.x) and not listed on the Supported Distribution page you sent.

2) Test machine: RPi 3B with Raspberry Pi OS 11 (bullseye), RPi HQ camera, GPIO comm for motor and light source control, as well as various custom scripts we are testing.
- Neither Linux SDK or Java are installed

The MS4717 works on both machines as a conventional (out of the box) USB barcode scanner. It's the three control executable files (enable, capture, disable) we are having problems with on the Test machine. (All three executables work on the Development machine.)

FWIW, we started with a Raspberry Pi primarily because its combination of "native" camera integration and GPIO (for motor and light source control). We are beginning to investigate hardware and Linux distros to potentially scale with and longer-term use.

L Luis Melendez

Thanks, Sean. It is a fresh build: new RPi 3B, new 64-bit Pi OS image loaded on new micro SD and ran apt get updates and upgrades. (Our original Test machine was an RPi 2B, which can only operate 32-bit.)

If I interpret your response correctly, you are indirectly saying executable files derived from the corescanner sample code should not require dependencies and that these binary output files ought to run without the SDK or Java installed on a 64-bit Linux machine. Is that correct?

Apologies; my initial post included a typo. I erroneously used an underscore instead of a hyphen in "libcs-client.so". That one small difference can make or break a search. (I just attempted to rerun the binary file and confirmed it is indeed a hyphen, and not an underscore.)

I thought it may have to do with a dependency because the file it appears to be looking for ("libcs-client.so"), is on the Dev machine in "/usr/lib/zebra-scanner/corescanner". There are 20 or so files in that subdirectory. "libcs-client.so" file "Properties" and then "Type" indicates "Link to shared library (application/x-sharedlib), and "Link target" as "libcs-client.so.4.4.1". Other than shared objects or library files, I'm not sure what .so files are, but 4.4.1 looks to be the same version of the SDK.

(The link you sent discusses a potential issue with a manual upgrade process (from Buster to Bullseye) and a few binary files to do with cmake and bc that was corrected by adding a -checksum flag.)

I could build an Ubuntu Test machine, but have not yet found good material on connecting a CSI camera (RPi HQ camera). I reached out to Ubuntu to investigate a formal business relationship, that is very early on in the works.

Any other ideas or insight?

CONTACT
Can’t find what you’re looking for?