[Rd] Building R in 64-bit mode
Michael Felt
aixtools at gmail.com
Wed Dec 16 13:03:01 CET 2015
Hope I am not sounding too much like a broken record - as far as 64-bit
build on AIX is concerned.
** Short - 32-bit builds complete normally, 64-bit builds stop at
"installing 'sysdata.rda'" with message:
Error: Line starting 'Package: tools ...' is malformed!
Execution halted
*** Longer...
I could file a bug - Importance, showstopper - but I would prefer to
better understand how to dig a bit deeper into why it is failing - and
work with (or for) you to make R easier to install and use on AIX.
As there are at least two ways to find 64-bit shared libraries (AIX-way;
GNU/Linux-way; "Solaris-way .so files"?) I am trying to keep it simpler
and and starting with the recently released R-3.2.3 distribution.
I made the following changes - to clean up many Duplicate Symbol
warnings :happy me!:
diff -ru R-3.2.3.orig/configure R-3.2.3/configure
--- R-3.2.3.orig/configure 2015-12-02 23:16:46 +0000
+++ R-3.2.3/configure 2015-12-16 10:52:15 +0000
@@ -26339,11 +26339,11 @@
##ADD: However, for example, symbol in libc of memcpy is
__memmove,__memmove64.
##ADD: This black magic puts lc before lR and pockets this.
if test "x${OBJECT_MODE}" = "x64"; then
- main_ldflags="${wl}-brtl ${wl}-bexpall ${wl}-bpT:0x100000000
${wl}-bpD:0x110000000 -lc"
+ main_ldflags="${wl}-brtl ${wl}-bpT:0x100000000
${wl}-bpD:0x110000000 -lc"
else
- main_ldflags="${wl}-brtl ${wl}-bexpall -lc"
+ main_ldflags="${wl}-brtl ${wl}-bmaxdata:0xd0000000/dsa -lc"
fi
- shlib_ldflags="${wl}-brtl ${wl}-G ${wl}-bexpall ${wl}-bnoentry -lc"
+ shlib_ldflags="${wl}-G ${wl}-bnoentry -lc"
SHLIB_LIBADD="\$(LIBM)"
shlib_cxxldflags="${shlib_ldflags}"
if test "${GCC}" = yes; then
diff -ru R-3.2.3.orig/src/include/Defn.h R-3.2.3/src/include/Defn.h
--- R-3.2.3.orig/src/include/Defn.h 2015-08-25 22:15:24 +0000
+++ R-3.2.3/src/include/Defn.h 2015-12-16 10:53:08 +0000
@@ -1271,7 +1271,7 @@
void invalidate_cached_recodings(void); /* from sysutils.c */
void resetICUcollator(void); /* from util.c */
void dt_invalidate_locale(); /* from Rstrptime.h */
-int R_OutputCon; /* from connections.c */
+extern int R_OutputCon; /* from connections.c */
extern int R_InitReadItemDepth, R_ReadItemDepth; /* from serialize.c */
void get_current_mem(size_t *,size_t *,size_t *); /* from memory.c */
unsigned long get_duplicate_counter(void); /* from duplicate.c */
A 32-bit build completes
...
make[3]: Leaving directory '/tmp/RtmpcvzNTA/R.INSTALL7e05458d74e28/mgcv/src'
installing to /data/prj/cran/32/R-3.2.3/library/mgcv/libs
** R
** data
** inst
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
* DONE (mgcv)
make[2]: Leaving directory
'/data/prj/cran/32/R-3.2.3/src/library/Recommended'
make[1]: Leaving directory
'/data/prj/cran/32/R-3.2.3/src/library/Recommended'
make[1]: Entering directory '/data/prj/cran/32/R-3.2.3/src/library'
'pdflatex' is needed to make vignettes but is missing on your system.
make[1]: Leaving directory '/data/prj/cran/32/R-3.2.3/src/library'
root at x065:[/data/prj/cran/32/R-3.2.3]
The same command, but as 64-bit stops at:
gcc -maix64 -mcpu=power5 -std=gnu99 -shared -Wl,-G -Wl,-bnoentry -lc
-L../../../../lib -L/opt/lib -o tools.so text.o init.o Rmd5.o md5.o
signals.o install.o getfmts.o http.
o gramLatex.o gramRd.o -lm -L../../../../lib -lR /opt/lib/libintl.a
/opt/lib/libiconv.a -lpthread -lc
ld: 0711-224 WARNING: Duplicate symbol: Rf_yylval
ld: 0711-224 WARNING: Duplicate symbol: Rf_yychar
ld: 0711-224 WARNING: Duplicate symbol: Rf_yynerrs
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more
information.
make[6]: Entering directory '/data/prj/cran/64/R/src/library/tools/src'
make[6]: Warning: File 'Makefile' has modification time 5.9 s in the future
mkdir ../../../../library/tools/libs
make[6]: warning: Clock skew detected. Your build may be incomplete.
make[6]: Leaving directory '/data/prj/cran/64/R/src/library/tools/src'
make[5]: Leaving directory '/data/prj/cran/64/R/src/library/tools/src'
make[4]: Leaving directory '/data/prj/cran/64/R/src/library/tools'
make[4]: Entering directory '/data/prj/cran/64/R/src/library/tools'
installing 'sysdata.rda'
Error: Line starting 'Package: tools ...' is malformed!
Execution halted
/data/prj/cran/R-3.2.3/share/make/basepkg.mk:150: recipe for target
'sysdata' failed
make[4]: *** [sysdata] Error 1
make[4]: Leaving directory '/data/prj/cran/64/R/src/library/tools'
Makefile:30: recipe for target 'all' failed
make[3]: *** [all] Error 2
make[3]: Leaving directory '/data/prj/cran/64/R/src/library/tools'
Makefile:36: recipe for target 'R' failed
make[2]: *** [R] Error 1
make[2]: Leaving directory '/data/prj/cran/64/R/src/library'
Makefile:28: recipe for target 'R' failed
make[1]: *** [R] Error 1
make[1]: Leaving directory '/data/prj/cran/64/R/src'
Makefile:60: recipe for target 'R' failed
make: *** [R] Error 1
root at x065:[/data/prj/cran/64/R]
## *** Commands
root at x065:[/data/prj/cran/32/R-3.2.3]cat ../../bin/my_shared.ksh
#!/usr/bin/ksh
# my_config_test
# --with-cairo=no --with-libpng=no --with-jpeglib=no
--with-libtiff=no \
# --with-cairo=no --with-libpng=yes --with-jpeglib=yes
--with-libtiff=yes \
# --with-libpth-prefix=/opt \
# --with-aix-soname=aix
HOST=$1
RELEASE=$2
. ../${HOST}.env || exit -1
/data/prj/cran/${RELEASE}/configure --disable-lto --prefix=/opt \
--enable-R-shlib \
--with-cairo=no --with-libpng=no --with-jpeglib=no
--with-libtiff=no \
--with-readline=no --with-x=no
root at x065:[/data/prj/cran/32/R-3.2.3]
root at x065:[/data/prj/cran/32/R-3.2.3]sdiff ../../??/aix.env
export OBJECT_MODE=32 |
export OBJECT_MODE=64
export CC="gcc -maix32 -mcpu=power5" |
export AR="ar -X64"
export CXX="g++ -maix32 -mcpu=power5" |
export CC="gcc -maix64 -mcpu=power5"
export F77="gfortran -maix32 -mcpu=power5" |
export CXX="g++ -maix64 -mcpu=power5"
export FC="gfortran -maix32 -mcpu=power5" |
export F77="gfortran -maix64 -mcpu=power5"
>
export FC="gfortran -maix64 -mcpu=power5"
export LDFLAGS="-L/opt/lib"
export LDFLAGS="-L/opt/lib"
root at x065:[/data/prj/cran/32/R-3.2.3]
Thanks,
Michael
More information about the R-devel
mailing list