08-30-2017, 12:12 AM
I'd like to install this application, but my first attempt gave an error concerning not being a correct binary image. What considerations do you need to take in looking for applications that run on Linux?
(08-30-2017, 12:12 AM)Siliconserf Wrote: [ -> ]I'd like to install this application, but my first attempt gave an error concerning not being a correct binary image. What considerations do you need to take in looking for applications that run on Linux?
(08-30-2017, 12:27 AM)MarkHaysHarris777 Wrote: [ -> ]OK, I'm working with Theologeek to see about getting involved in porting to the A64. My problem is I'm good on C, C++, and asm, but for embedded systems and Windows. Not much experience at all with Linux (part of the reason for becoming interested in the Pinebook.) I'll need someone to work with to understand the low level glue stuff like support files and configuration issues. Also, I have no idea at the moment where to get the open source cross compiler and project management software to run under Windows 10.(08-30-2017, 12:12 AM)Siliconserf Wrote: [ -> ]I'd like to install this application, but my first attempt gave an error concerning not being a correct binary image. What considerations do you need to take in looking for applications that run on Linux?
Binary executable codes "compiled linked object files" (blobs) must be compiled for the processor that they are going to be running on primarily ( what we call the target processor ) and secondarily must be coded for the target operating system architecture.
In the case of the Pinebook that means that the target processor is an A64 SoC designed and manufactured by Allwinner. It is a 64bit SoC containing four A53 Arm cores capable of running both 32bit and 64bit code; if the operating system was compiled for the aarch64 target ( 64bit ) then both 32bit and 64bit codes will run provided that they were compiled for the target processor A64 (and provided the 32bit libraries are present). If on the other hand the operating system was compiled for the armhf target ( 32bit ) then only 32 bit codes will run on the processor provided that the codes were compiled for the armhf target as well !
If you try to run codes for an Intel x86 style processor on the A64 SoC, they will not run; the x86 codes will only run on an x86 processor or in an x86 emulator. If you try to run 64bit codes on a 32bit system ( even if they were compiled for the target SoC) they will not run either.
Having said all of that; this is one of the many reasons why free software ( and open source ) are important ! If you have the sources for the app you want to install you can build the app for the target processor ( A53 core A64 SoC ), and the target Arm version ( in our case, either aarch64 or armhf ) and they will run great regardless the machine architecture the codes were developed on !
Note: Some software will not run on a given linux distribution ( distro ) because the scripts and configuration files required by the app do not match the configuration of the distro; Usually these can be made to work given some time to port the changes assuming that the source is available or that the configuration files are all human readable text files.
(08-30-2017, 10:43 AM)Siliconserf Wrote: [ -> ]OK, I'm working with Theologeek to see about getting involved in porting to the A64. My problem is I'm good on C, C++, and asm, but for embedded systems and Windows. Not much experience at all with Linux (part of the reason for becoming interested in the Pinebook.) I'll need someone to work with to understand the low level glue stuff like support files and configuration issues. Also, I have no idea at the moment where to get the open source cross compiler and project management software to run under Windows 10.
(08-30-2017, 09:46 PM)MarkHaysHarris777 Wrote: [ -> ](08-30-2017, 10:43 AM)Siliconserf Wrote: [ -> ]OK, I'm working with Theologeek to see about getting involved in porting to the A64. My problem is I'm good on C, C++, and asm, but for embedded systems and Windows. Not much experience at all with Linux (part of the reason for becoming interested in the Pinebook.) I'll need someone to work with to understand the low level glue stuff like support files and configuration issues. Also, I have no idea at the moment where to get the open source cross compiler and project management software to run under Windows 10.
I'm going to answer your questions in reverse or, sentence by sentence; in general, and I do mean this in the generous spirit of right good will-- you're going to want to dump windows; windows will only get in the way, constrain you, and force you to use paradigms which are out-moded and which are not helpful. Hint.
You will want to use a unix-like OS; freeBSD, OpenBSD, Mac OS, or any of a number of flavors of gnu+linux. So, first let's mention gnu + linux. Linux is just the kernel; NOT the system. The system is primarily two things in a modern environment: 1) GNU, and 2) Systemd. You are going to want to learn those two components, and they are a steep learning curve. Find a good "Learn Linux in Five Days" course on-line; it will jump-start you; I can recommend two or three if you're interested.
Ok, answers to your questions, in reverse:
(1) You have three choices for open source compilation development software, in no particular order, LLVM based clang, Apple's (C|C++ -like) "Swift," and GNU's gcc. These are freely available for virtually all platforms these days ( but not all ). I use LLVM, clang, and gnu C|C++ ( gcc ). These will run right there on your Pinebook !
(2) In the old days newbies needed to learn the unix filesystem, permissions, and sysvinit. Today the filesystem and permissions are still paramount but in a modern environment you will also need to learn Systemd-- I can only overstate this pedantically about 100 times, don't ignore it. I'm willing to work with you and help you come up to speed, but caveats are 1) I won't do your work for you, and 2) I won't help you struggle with proprietary systems development models like Windows.
3) Like anything, you will gain gnu+linux experience by gaining experience ( pedantics ) Rome wasn't built in a day, and there is no royal road to geometry.
4) If you're good at C, C++, and Assembler-- that's 3/4 the battle; gnu+linux just makes using those tools cleaner, and easier. If by "embedded systems" you are referring to the sketches on the Arduino Uno, yes, programming on a unix-like environment is significantly more difficult. You have something more than setup() and loop().
5) Porting codes to Arm gets tricky because many of the underlying dependencies of the original build environment are not available for Arm; if you can build them yourself, great, but if not you'll need to find an alternative or scrap the project until your skills improve ( or get a project partner who can fill in the gaps ).
Again, sorry to be pedantic ( its really not my intent ). I'm just trying to be complete; you asked a mouth-full !