SDL-Hercules-390 / hyperion

The SDL Hercules 4.x Hyperion version of the System/370, ESA/390, and z/Architecture Emulator
Other
240 stars 90 forks source link

Trying to build Hercules on Ubuntu but get unreferenced errors #600

Closed fsword7 closed 11 months ago

fsword7 commented 11 months ago

I am trying to build hercules on Ubuntu but got undefined reference errors to dynamic library function calls. Also it warned with RTLD_NOW redefined through each c file. Look results below.

I just run './configure --prefix=/usr/local' then make.

Thanks, Tim

` CC scsiutil.lo In file included from hercules.h:86, from scsiutil.c:9: hdl.h:231: warning: "RTLD_NOW" redefined 231 #define RTLD_NOW 0
In file included from /usr/include/dlfcn.h:27, from hstdinc.h:220, from scsiutil.c:8: /usr/include/x86_64-linux-gnu/bits/dlfcn.h:25: note: this is the location of the previous definition 25 #define RTLD_NOW 0x00002 / Immediate function call binding. /

CCLD libhdt3420_not_mod.la CCLD cckdcdsk /usr/bin/ld: ./.libs/libhercu.so: undefined reference to lt_dlclose' /usr/bin/ld: ./.libs/libhercu.so: undefined reference tolt_dlerror' /usr/bin/ld: ./.libs/libhercu.so: undefined reference to lt_dlopen' /usr/bin/ld: ./.libs/libhercu.so: undefined reference tolt_dlinit' /usr/bin/ld: ./.libs/libhercu.so: undefined reference to lt_dlsym' collect2: error: ld returned 1 exit status make[2]: *** [Makefile:2256: cckdcdsk] Error 1 make[2]: Leaving directory '/home/sword7/Setup/hyperion.vc' make[1]: *** [Makefile:2678: all-recursive] Error 1 make[1]: Leaving directory '/home/sword7/Setup/hyperion.vc' make: *** [Makefile:1999: all] Error 2

wrljet commented 11 months ago

Timothy,

Please run util/bldlvlck and post the output here.

And ensure you have these two packages installed:

sudo apt install libltdl-dev libtool-bin

Bill

fsword7 commented 11 months ago

Thanks. I now got it. I will install additional tools. README did not mention that run bldlvlck first before build it. I did not see README.LINUX.md in readme (it does not exist).

Tim


This utility will check the level of various utilities needed to build
hercules. Checking is done against versions that are KNOWN to work.
This doesn't mean a build will NOT succeed with older versions
of the utilities, but will give a hint as to what package may need
an upgrade if the build ever fails with some odd reason.

Machine architecture is x86_64

OK  autoconf requires 2.64, found 2.71

OK  automake requires 1.9, found 1.16.5

OK  bash requires 3.2, found 5.2.15

OK  cmake requires 3.2, found 3.27.4

INSTALL flex not found
    URL: http://www.gnu.org/directory/flex.html

INSTALL gawk not found
    URL: http://www.gnu.org/directory/gawk.html

OK  gcc requires 6.2.0, found gcc 13.2.0

OK  grep requires 1, found 3.11

OK  ld requires 2.22, found 2.41

INSTALL libtool not found
    URL: https://sdl-hercules-390.github.io/html/hercinst.html

ltdl.h required include file, NOT found.    URL: https://sdl-hercules-390.github.io/html/hercinst.html

OK  m4 requires 1.4.6, found 1.4.19

OK  make requires 3.79, found 4.3

OK  perl requires 5.6, found 5.36.0

OK  sed requires 3.02, found 4.9
wrljet commented 11 months ago

Everything is explained here: Building Hercules

It lists all the packages required for various different Linux distros (and other OSes).

Bill

fsword7 commented 11 months ago

Thanks for info. I succesfully build it into executable. It just warned with some files like that:

  CC       zfcp.lo
In file included from hercules.h:105,
                 from zfcp.c:39:
hinlines.h:342:33: warning: ‘Release_Interrupt_Lock’ is static but used in inline function ‘s370_per1_gra’ which is not static
  342 | #define RELEASE_INTLOCK(r)      Release_Interrupt_Lock( r, PTT_LOC )
      |                                 ^~~~~~~~~~~~~~~~~~~~~~
inline.h:555:5: note: in expansion of macro ‘RELEASE_INTLOCK’
  555 |     RELEASE_INTLOCK( regs );
      |     ^~~~~~~~~~~~~~~
hinlines.h:341:33: warning: ‘Obtain_Interrupt_Lock’ is static but used in inline function ‘s370_per1_gra’ which is not static
  341 | #define OBTAIN_INTLOCK(r)       Obtain_Interrupt_Lock( r, PTT_LOC )
      |                                 ^~~~~~~~~~~~~~~~~~~~~
inline.h:550:5: note: in expansion of macro ‘OBTAIN_INTLOCK’
  550 |     OBTAIN_INTLOCK( regs );
      |     ^~~~~~~~~~~~~~
wrljet commented 11 months ago

Yeah, there's oodles of warnings, depending on what OS, compiler, and compiler version you're using. Those you listed can be ignored.

Bill