News:

Masm32 SDK description, downloads and other helpful links
Message to All Guests
NB: Posting URL's See here: Posted URL Change

Main Menu

UASM - Linux Examples

Started by LiaoMi, February 24, 2019, 08:49:53 PM

Previous topic - Next topic

LiaoMi

Good morning(We have morning here  :biggrin:),

I am studying examples of Linux programs that are attached to the project. I chose two examples - Linux4a.asm, Linux4d.asm. Just want to say that I work under Windows, I have installed Msys64 with support for 32 bit code. UASM (2.47.1) compiled all source code as needed, but when I try to complete the build via ld or gcc, I get errors

Microsoft Windows [Version 10.0.17134.472]
(c) 2018 Microsoft Corporation. All rights reserved.

c:\msys64\mingw32\bin>ld -s -shared -o Linux4d.so Linux4d.o
ld: cannot export getstring: symbol not found

c:\msys64\mingw32\bin>gcc -s -shared -o Linux4d.so Linux4d.o
c:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/7.3.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot export getstring: symbol not found
collect2.exe: error: ld returned 1 exit status

c:\msys64\mingw32\bin>ld -s -shared -soname libLinux4d.so.1 -o libLinux4d.so.1.0 Linux4d.o
ld: cannot export getstring: symbol not found

c:\msys64\mingw32\bin>


What is the cause of the problem?  :icon_redface:  :icon_confused:

Vortex

Hi LiaoMi,

My apologies if I am wrong but .so files ( shared objects ) are specific to Linux. They are like DLLs in Windows.

LiaoMi

Quote from: Vortex on February 24, 2019, 09:11:35 PM
Hi LiaoMi,

My apologies if I am wrong but .so files ( shared objects ) are specific to Linux. They are like DLLs in Windows.

Hi Vortex,

It is right ..
QuoteA .a file is a static library, while a .so file is a shared object (dynamic) library similar to a DLL on Windows.

Are you hinting at the fact that I can not build .so file under windows using gcc, am I right?

KradMoonRa

Hi,

Normally ld allow to export everything without a need for a export .def file like vc under windows.

But I cant find the example You talking to check the files.

Your's project is using function getstring(), but the compiler link time cant decipher were it is!

And yes You can cross compile for linux with mingw and clang, but system functions aren't available if You don't have the linux header libs and libs itself.
The uasmlib

LiaoMi

Quote from: KradMoonRa on February 24, 2019, 09:32:43 PM
Hi,

Normally ld allow to export everything without a need for a export .def file like vc under windows.

But I cant find the example You talking to check the files.

Your's project is using function getstring(), but the compiler link time cant decipher were it is!

And yes You can cross compile for linux with mingw and clang, but system functions aren't available if You don't have the linux header libs and libs itself.

Hi KradMoonRa,

I also thought so, but how is it in reality .. All examples are in the zip release of UASM - Samples\Linux32\Linux4d.asm

KradMoonRa

Hi,

Ok I see,

MinGW aren't cross compiling for linux, normally its not necessary to pass nothing more than the object file name, but the MinGW aren't cross compiling till You add some linux cross tool chain for windows. Or use clang itself, to produce unix version of the object files.

Some directions for clang
https://clang.llvm.org/docs/CrossCompilation.html

And here for MinGW cross tools
http://www.mingw.org/wiki/linuxcrossmingw
The uasmlib

LiaoMi

 :t

$ pacman -S mingw-w64-cross-toolchain mingw-w64-cross
:: There are 9 members in group mingw-w64-cross-toolchain:
:: Repository msys
   1) mingw-w64-cross-binutils  2) mingw-w64-cross-crt-git  3) mingw-w64-cross-gcc
   4) mingw-w64-cross-headers-git  5) mingw-w64-cross-tools-git
   6) mingw-w64-cross-windows-default-manifest  7) mingw-w64-cross-winpthreads-git
   8) mingw-w64-cross-winstorecompat-git  9) mingw-w64-cross-zlib

Enter a selection (default=all):
:: There are 9 members in group mingw-w64-cross:
:: Repository msys
   1) mingw-w64-cross-binutils  2) mingw-w64-cross-crt-git  3) mingw-w64-cross-gcc
   4) mingw-w64-cross-headers-git  5) mingw-w64-cross-tools-git
   6) mingw-w64-cross-windows-default-manifest  7) mingw-w64-cross-winpthreads-git
   8) mingw-w64-cross-winstorecompat-git  9) mingw-w64-cross-zlib

Enter a selection (default=all):


Packages (11) isl-0.19-1  mpc-1.1.0-1  mingw-w64-cross-binutils-2.30-1
              mingw-w64-cross-crt-git-6.0.0.5141.696b37c3-1  mingw-w64-cross-gcc-7.3.0-2
              mingw-w64-cross-headers-git-6.0.0.5141.696b37c3-1
              mingw-w64-cross-tools-git-6.0.0.5141.696b37c3-1
              mingw-w64-cross-windows-default-manifest-6.4-2
              mingw-w64-cross-winpthreads-git-6.0.0.5142.0b647fe7-1
              mingw-w64-cross-winstorecompat-git-6.0.0.5099.5e5f06f6-1  mingw-w64-cross-zlib-1.2.11-1

Total Download Size:    79.61 MiB
Total Installed Size:  602.40 MiB

:: Proceed with installation? [Y/n] y
:: Retrieving packages...
mingw-w64-cross-binutils-2.30-1-...     5.5 MiB  1005K/s 00:06 [##################################] 100%
mingw-w64-cross-headers-git-6.0....    14.2 MiB  2.64M/s 00:05 [##################################] 100%
mingw-w64-cross-crt-git-6.0.0.51...     4.7 MiB  2.10M/s 00:02 [##################################] 100%
mpc-1.1.0-1-x86_64                     74.1 KiB  2.19M/s 00:00 [##################################] 100%
isl-0.19-1-x86_64                     485.7 KiB  1833K/s 00:00 [##################################] 100%
mingw-w64-cross-winpthreads-git-...   273.6 KiB  2.81M/s 00:00 [##################################] 100%
mingw-w64-cross-windows-default-...    13.2 KiB  1103K/s 00:00 [##################################] 100%
mingw-w64-cross-gcc-7.3.0-2-x86_64     53.6 MiB  2.26M/s 00:24 [##################################] 100%
mingw-w64-cross-tools-git-6.0.0....   423.6 KiB   370K/s 00:01 [##################################] 100%
mingw-w64-cross-winstorecompat-g...   111.5 KiB  2.87M/s 00:00 [##################################] 100%
mingw-w64-cross-zlib-1.2.11-1-x86_64  187.4 KiB  2.08M/s 00:00 [##################################] 100%
(11/11) checking keys in keyring                                [##################################] 100%
(11/11) checking package integrity                              [##################################] 100%
(11/11) loading package files                                   [##################################] 100%
(11/11) checking for file conflicts                             [##################################] 100%
(11/11) checking available disk space                           [##################################] 100%
:: Processing package changes...
( 1/11) installing mingw-w64-cross-binutils                     [##################################] 100%
( 2/11) installing mingw-w64-cross-headers-git                  [##################################] 100%
( 3/11) installing mingw-w64-cross-crt-git                      [##################################] 100%
( 4/11) installing mpc                                          [##################################] 100%
( 5/11) installing isl                                          [##################################] 100%
( 6/11) installing mingw-w64-cross-winpthreads-git              [##################################] 100%
( 7/11) installing mingw-w64-cross-windows-default-manifest     [##################################] 100%
( 8/11) installing mingw-w64-cross-gcc                          [##################################] 100%
( 9/11) installing mingw-w64-cross-tools-git                    [##################################] 100%
(10/11) installing mingw-w64-cross-winstorecompat-git           [##################################] 100%
(11/11) installing mingw-w64-cross-zlib                         [##################################] 100%


The installation is complete, it will be more interesting, since it is not clear how to enter the link parameters correctly  :eusa_dance: