I worked on compiling 3.0-rc1 on AIX 7.1 last year and with help from @sf-mensch
Now I need to get this working on AIX 7.2 - but I'm having issues.
Short version, I have GCC 4.9.4 from perlz installed with all dependencies. My configure command works but I get a failure during make. (I am using gmake) I have attached config.log as well as the output of make -bnoquiet.
help2man, bison, autotools and friends are only needed when building from a VCS snapshot, not from a tarball. It is fine that those are missing.
In general configure checks for working dependencies and either creates an error (if mandatory) or disables the feature (if optional), so -without is normally not needed for a local build.
If you don't explicit want to check for an optional item (like "error if missing") there's no need to explicit specify --with either.
bdb is the sole exemption (mainly for historic reasons) which will behave identical in the next major version update (4.x) [instead a clear warning will be raised if no working INDEXED handler is found].
Concerning cjson: as it is a very easy drop-in option one may consider downloading the two source files and copy them to the "libcob" folder before running configure.
Hm, that looks a bit weird. Before we look too much - can you please recheck if this also happens with the current development snapshot? You can try the one from view hours ago
Last edit: Simon Sobisch 2020-11-24
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I just tried with the dev tarball and received a similar error regarding __cxa_finalize
ld: 0711-317 ERROR: Undefined symbol: .__cxa_finalize
ld: 0711-317 ERROR: Undefined symbol: .__register_frame_info_table
ld: 0711-317 ERROR: Undefined symbol: .__deregister_frame_info
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
collect2: error: ld returned 8 exit status
gmake: *** [Makefile:554: libcob.la] Error 1
make: 1254-004 The error code from the last command is 1.
Note: the CXXFLAGS specified are not taken up as those are the flags for C++.
You may want to recheck what we did last time (and possibly drop a link here).
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
When I issued that shorted make in libcob directory it immediately fails with this:
gmake: *** libcob: A file or directory in the path name does not exist.. Stop.
Here is the original configure command we used on the prior aix server, which was consequently aix 7.1
This SO question suggests that maybe the wrong C library is used (bad setup?).
There's one thing I can suggest because that helped me on AIX once, too.
If it is possible: download, unpack, configure and make GMP.
There are two benefits in doing this:
1. if you install this you likely have a better math performance in GnuCOBOL afterwards
2. you can inspect the CPPFLAGS/LDFLAGS that are auto-added by GMP and try to use the same for GnuCOBOL (GMP's configure "guesses" better).
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi all,
I worked on compiling 3.0-rc1 on AIX 7.1 last year and with help from @sf-mensch
Now I need to get this working on AIX 7.2 - but I'm having issues.
Short version, I have GCC 4.9.4 from perlz installed with all dependencies. My configure command works but I get a failure during make. (I am using gmake) I have attached config.log as well as the output of make -bnoquiet.
This is the configure command I used
Thanks in advance for any help!
Whoops, didn't actually upload config.log
I should also add, I've tried this with 3.0-rc1 as well as 3.1-rc1, attached output is from 3.1-rc1
Last edit: Josh Fox 2020-11-23
I think you're missing dependencies
You must install help2man
also add this during your config
--without-cjson --without-xml2you'll need the autoconf package. While doing that, autotools, automake, autopoint, libtool
help2man, bison, autotools and friends are only needed when building from a VCS snapshot, not from a tarball. It is fine that those are missing.
In general configure checks for working dependencies and either creates an error (if mandatory) or disables the feature (if optional), so
-withoutis normally not needed for a local build.If you don't explicit want to check for an optional item (like "error if missing") there's no need to explicit specify
--witheither.bdb is the sole exemption (mainly for historic reasons) which will behave identical in the next major version update (4.x) [instead a clear warning will be raised if no working INDEXED handler is found].
Concerning cjson: as it is a very easy drop-in option one may consider downloading the two source files and copy them to the "libcob" folder before running configure.
https://raw.githubusercontent.com/DaveGamble/cJSON/v1.7.14/cJSON.c
https://raw.githubusercontent.com/DaveGamble/cJSON/v1.7.14/cJSON.h
Hm, that looks a bit weird. Before we look too much - can you please recheck if this also happens with the current development snapshot? You can try the one from view hours ago
Last edit: Simon Sobisch 2020-11-24
Hi @sf-mensch
I just tried with the dev tarball and received a similar error regarding __cxa_finalize
ld: 0711-317 ERROR: Undefined symbol: .__cxa_finalize
ld: 0711-317 ERROR: Undefined symbol: .__register_frame_info_table
ld: 0711-317 ERROR: Undefined symbol: .__deregister_frame_info
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
collect2: error: ld returned 8 exit status
gmake: *** [Makefile:554: libcob.la] Error 1
make: 1254-004 The error code from the last command is 1.
I am also attaching config.log for 3.1.1-dev
Thanks,
Josh
That's interesting!
The part that is raising that error is "ld". you likely can do as it requests by:
= run make in the directory libcob and use special LDFLAGS (I've used the one in your config.log + requested one)
Note: the
CXXFLAGSspecified are not taken up as those are the flags for C++.You may want to recheck what we did last time (and possibly drop a link here).
When I issued that shorted make in libcob directory it immediately fails with this:
gmake: *** libcob: A file or directory in the path name does not exist.. Stop.
Here is the original configure command we used on the prior aix server, which was consequently aix 7.1
OK, we just ignore CXXFLAGS then...
Concerning the error for the shortened version please retry with
Simon
When I reran from inside libcob directory without the -C flag it runs a little longer but the initial error still occurs:
Josh
This SO question suggests that maybe the wrong C library is used (bad setup?).
There's one thing I can suggest because that helped me on AIX once, too.
If it is possible: download, unpack, configure and make GMP.
There are two benefits in doing this:
1. if you install this you likely have a better math performance in GnuCOBOL afterwards
2. you can inspect the CPPFLAGS/LDFLAGS that are auto-added by GMP and try to use the same for GnuCOBOL (GMP's configure "guesses" better).
Hi Simon,
Have you had any chance to review my issue?
Thank you,
Josh