Building R for AIX in 32-bit mode - as preparation for building in 64-bit mode (changed subject!) - INFO/FEEDBACK - do not read as a bug report!
I have determined why there are many "WARNING: Duplicate symbol:" messages.
*** My apologies for the length *** There is a lot of detail - but I
hope the detail will help R - and others - setup correct options for
shared libraries.
*** As I press send, I have not stopped testing (my final trial here
might not even work) - but!
*** the message is that shared libraries do not need to have all
external libraries on the command line to make a shareable library
(that is the whole point of multiple shared libraries I think)
Anyway, I hope you are"in" for a long read.
a) the duplicate symbol messages occur during the creation (read
linking) of a shared object.
b) the shared object does not need to have all symbols resolved -
actually, you do not want "external" symbols from elsewhere pulled
into to the archive.
c) one example - stats.so
currently the command to make stats.so is:
gcc -Wl,-bnoquiet -std=gnu99 -shared -Wl,-brtl -Wl,-G -Wl,-bexpall
-Wl,-bnoentry -o stats.so init.o kmeans.o ansari.o bandwidth
s.o chisqsim.o d2x2xk.o fexact.o kendall.o ks.o line.o smooth.o prho.o
swilk.o ksmooth.o loessc.o monoSpl.o isoreg.o Srunmed.o d
blcen.o distance.o hclust-utils.o nls.o rWishart.o HoltWinters.o
PPsum.o arima.o burg.o filter.o mAR.o pacf.o starma.o port.o fa
mily.o sbart.o approx.o loglin.o lowess.o massdist.o splines.o lm.o
complete_cases.o cov.o deriv.o fft.o fourier.o model.o optim
.o optimize.o integrate.o random.o distn.o zeroin.o rcont.o
influence.o bsplvd.o bvalue.o bvalus.o loessf.o ppr.o qsbart.o sgram
.o sinerp.o sslvrg.o stxwx.o hclust.o kmns.o eureka.o stl.o portsrc.o
lminfl.o -fopenmp -L../../../../lib -lRlapack -lgfortran -
lm /opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4/libgcc.a -lg -lm
/opt/lib/libintl.a /opt/lib/libiconv.a -lpthread
The result has duplicate symbols:
With comments:
gcc -Wl,-bnoquiet -std=gnu99 -shared -Wl,-brtl -Wl,-G -Wl,-bexpall
-Wl,-bnoentry -o stats.so init.o kmeans.o ansari.o bandwidths.o
chisqsim.o d2x2xk.o fexact.o kendall.o ks.o line.o smooth.o prho.o
swilk.o ksmooth.o loessc.o monoSpl.o isoreg.o Srunmed.o dblcen.o
distance.o hclust-utils.o nls.o rWishart.o HoltWinters.o PPsum.o
arima.o burg.o filter.o mAR.o pacf.o starma.o port.o family.o sbart.o
approx.o loglin.o lowess.o massdist.o splines.o lm.o complete_cases.o
cov.o deriv.o fft.o fourier.o model.o optim.o optimize.o integrate.o
random.o distn.o zeroin.o rcont.o influence.o bsplvd.o bvalue.o
bvalus.o loessf.o ppr.o qsbart.o sgram.o sinerp.o sslvrg.o stxwx.o
hclust.o kmns.o eureka.o stl.o portsrc.o lminfl.o -fopenmp
-L../../../../lib -lRlapack -lgfortran -lm
/opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4/libgcc.a -lg -lm
/opt/lib/libintl.a /opt/lib/libiconv.a -lpthread -lc
(ld): halt 4
** Display the options passed to ld
(ld): setopt r/o->w
(ld): setopt nodelcsect
(ld): setopt noautoexp
(ld): setopt expall
(ld): setopt rtl
(ld): setopt nortllib
(ld): setopt symbolic:0
(ld): setfflag 4
(ld): savename stats.so
(ld): filelist 82 2
** not a program, not all symbols need to resolve
(ld): setopt noprogram
** not a program, not a defined entry point
(ld): noentry
NOENTRY: There is no entry point.
** link/load these objects
(ld): i init.o
(ld): i /tmp//ccc85WAT.o
(ld): i kmeans.o
(ld): i ansari.o
(ld): i bandwidths.o
(ld): i chisqsim.o
(ld): i d2x2xk.o
(ld): i fexact.o
(ld): i kendall.o
(ld): i ks.o
(ld): i line.o
(ld): i smooth.o
(ld): i prho.o
(ld): i swilk.o
(ld): i ksmooth.o
(ld): i loessc.o
(ld): i monoSpl.o
(ld): i isoreg.o
(ld): i Srunmed.o
(ld): i dblcen.o
(ld): i distance.o
(ld): i hclust-utils.o
(ld): i nls.o
(ld): i rWishart.o
(ld): i HoltWinters.o
(ld): i PPsum.o
(ld): i arima.o
(ld): i burg.o
(ld): i filter.o
(ld): i mAR.o
(ld): i pacf.o
(ld): i starma.o
(ld): i port.o
(ld): i family.o
(ld): i sbart.o
(ld): i approx.o
(ld): i loglin.o
(ld): i lowess.o
(ld): i massdist.o
(ld): i splines.o
(ld): i lm.o
(ld): i complete_cases.o
(ld): i cov.o
(ld): i deriv.o
(ld): i fft.o
(ld): i fourier.o
(ld): i model.o
(ld): i optim.o
(ld): i optimize.o
(ld): i integrate.o
(ld): i random.o
(ld): i distn.o
(ld): i zeroin.o
(ld): i rcont.o
(ld): i influence.o
(ld): i bsplvd.o
(ld): i bvalue.o
(ld): i bvalus.o
(ld): i loessf.o
(ld): i ppr.o
(ld): i qsbart.o
(ld): i sgram.o
(ld): i sinerp.o
(ld): i sslvrg.o
(ld): i stxwx.o
(ld): i hclust.o
(ld): i kmns.o
(ld): i eureka.o
(ld): i stl.o
(ld): i portsrc.o
(ld): i lminfl.o
** continue loading objects - these are archives!
(ld): lib ../../../../lib/libRlapack.so
(ld): lib /opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4/../../../pthread/libgfortran.a
(ld): lib /usr/lib/libm.a
(ld): i /opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4/libgcc.a
(ld): lib /usr/lib/libg.a
(ld): i /opt/lib/libintl.a
(ld): i /opt/lib/libiconv.a
(ld): lib /usr/lib/libpthread.a
(ld): lib /usr/lib/libc.a
(ld): lib /opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4/../../../pthread/libgomp.a
(ld): lib /opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4/../../../pthread/libgcc_s.a
** Import Symbols from the shared objects
LIBRARY: Shared object libRlapack.so: 574 symbols imported.
LIBRARY: Shared object libgfortran.a[libgfortran.so.3]: 1014 symbols imported.
LIBRARY: Shared object /opt/lib/libintl.a[libintl.so.8]: 58 symbols imported.
LIBRARY: Shared object /opt/lib/libiconv.a[libiconv.so.2]: 13 symbols imported.
LIBRARY: Shared object /opt/lib/libiconv.a[shr4.o]: 10 symbols imported.
LIBRARY: Shared object /opt/lib/libiconv.a[shr.o]: 11 symbols imported.
LIBRARY: Shared object libpthread.a[shr_comm.o]: 179 symbols imported.
LIBRARY: Shared object libpthread.a[shr_xpg5.o]: 173 symbols imported.
LIBRARY: Shared object libc.a[shr.o]: 3287 symbols imported.
LIBRARY: Shared object libc.a[meth.o]: 2 symbols imported.
LIBRARY: Shared object libc.a[posix_aio.o]: 20 symbols imported.
LIBRARY: Shared object libc.a[aio.o]: 18 symbols imported.
LIBRARY: Shared object libc.a[pse.o]: 8 symbols imported.
LIBRARY: Shared object libc.a[dl.o]: 4 symbols imported.
LIBRARY: Shared object libc.a[pty.o]: 1 symbols imported.
LIBRARY: Shared object libc.a[cthread.o]: 25 symbols imported.
LIBRARY: Shared object libc.a[uchar.o]: 4 symbols imported.
LIBRARY: Shared object libgomp.a[libgomp.so.1]: 228 symbols imported.
LIBRARY: Shared object libgcc_s.a[shr.o]: 127 symbols imported.
FILELIST: Number of previously inserted files processed: 82
** load the symbols we are exporting
(ld): exports /tmp//ccNjuEdL.x
EXPORTS: Symbols exported: 312
(ld): initfini _GLOBAL__FI_stats_so _GLOBAL__FD_stats_so
(ld): resolve
** during symbol resolution we see duplicates!!!
ld: 0711-228 WARNING: Duplicate symbols were found while resolving symbols.
The following duplicates were found:
Symbol Source-File(Object) OR Import-File{Shared-object}
------------------------- -------------------------------------------------
.fsav {../../../../lib/libRlapack.so}
** Duplicate ** noname(/usr/lib/libc.a[fsavres.o])
.fres {../../../../lib/libRlapack.so}
** Duplicate ** noname(/usr/lib/libc.a[fsavres.o])
.memcpy {../../../../lib/libRlapack.so}
** Duplicate ** moveeq.s(/usr/lib/libc.a[moveeq.o])
.isnan {../../../../lib/libRlapack.so}
** Duplicate ** isnan.s(/usr/lib/libm.a[isnan.o])
.finite {../../../../lib/libRlapack.so}
** Duplicate ** finite.s(/usr/lib/libm.a[finite.o])
** Duplicate ** finite.s(/usr/lib/libc.a[finite.o])
.bcopy {../../../../lib/libRlapack.so}
** Duplicate ** moveeq.s(/usr/lib/libc.a[moveeq.o])
RESOLVE: 1395 of 10573 symbols were kept.
RESOLVE: The return code is 4.
** sigh - do not know what glink.o is...
(ld): addgl /usr/lib/glink.o
ADDGL: Glink code added for 507 symbols.
(ld): mismatch
MISMATCH: No type mismatches exist.
(ld): comprld
COMPRLD: Kept 10436 of 10436 relocation entries.
(ld): origin page 0x10000000 0x20000000
(ld): libpath ../../../../lib:/opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4/pthread:/opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4/../../../pthread:/opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4:/opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4/../../..:/usr/lib:/lib
LIBPATH: Library path set to
../../../../lib:/opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4/pthread:/opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4/../../../pthread:/opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4:/opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4/../../..:/usr/lib:/lib
(ld): save SRE .
SAVE: Section sizes = 582204+13364+884 (0x8E23C+0x3434+0x374 hex)
SAVE: Size of TOC: 4048 (0xFD0 hex)
SAVE: No .loader section relocation entries exist for the .text section.
(ld): rc
RC: Highest return code was 4.
ld: 0711-224 WARNING: Duplicate symbol: .fsav
ld: 0711-224 WARNING: Duplicate symbol: .fres
ld: 0711-224 WARNING: Duplicate symbol: .memcpy
ld: 0711-224 WARNING: Duplicate symbol: .isnan
ld: 0711-224 WARNING: Duplicate symbol: .finite
ld: 0711-224 WARNING: Duplicate symbol: .bcopy
OKAY - lets first just get rid of the Duplicates - by removing some
references to external (shared) libraries.
Now after removing the arguments -lRlapack and -lc the command looks like:
gcc -Wl,-bnoquiet -std=gnu99 -shared -Wl,-brtl -Wl,-G -Wl,-bexpall
-Wl,-bnoentry -o stats.so init.o kmeans.o ansari.o bandwidth
s.o chisqsim.o d2x2xk.o fexact.o kendall.o ks.o line.o smooth.o prho.o
swilk.o ksmooth.o loessc.o monoSpl.o isoreg.o Srunmed.o d
blcen.o distance.o hclust-utils.o nls.o rWishart.o HoltWinters.o
PPsum.o arima.o burg.o filter.o mAR.o pacf.o starma.o port.o fa
mily.o sbart.o approx.o loglin.o lowess.o massdist.o splines.o lm.o
complete_cases.o cov.o deriv.o fft.o fourier.o model.o optim
.o optimize.o integrate.o random.o distn.o zeroin.o rcont.o
influence.o bsplvd.o bvalue.o bvalus.o loessf.o ppr.o qsbart.o sgram
.o sinerp.o sslvrg.o stxwx.o hclust.o kmns.o eureka.o stl.o portsrc.o
lminfl.o -fopenmp -L../../../../lib -lgfortran -lm /opt/li
b/gcc/powerpc-ibm-aix5.3.0.0/4.7.4/libgcc.a -lg -lm /opt/lib/libintl.a
/opt/lib/libiconv.a -lpthread
And the result is (truncated)
FILELIST: Number of previously inserted files processed: 81
(ld): exports /tmp//ccSxDrfr.x
EXPORTS: Symbols exported: 312
(ld): initfini _GLOBAL__FI_stats_so _GLOBAL__FD_stats_so
(ld): resolve
RESOLVE: 1638 of 10364 symbols were kept.
(ld): addgl /usr/lib/glink.o
ADDGL: Glink code added for 538 symbols.
(ld): mismatch
MISMATCH: No type mismatches exist.
(ld): comprld
COMPRLD: Kept 11305 of 11305 relocation entries.
(ld): origin page 0x10000000 0x20000000
(ld): libpath ../../../../lib:/opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4/pthread:/opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4/../../../pthread:/opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4:/opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4/../../..:/usr/lib:/lib
LIBPATH: Library path set to
../../../../lib:/opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4/pthread:/opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4/../../../pthread:/opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4:/opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4/../../..:/usr/lib:/lib
(ld): save SRE .
SAVE: Section sizes = 624252+44524+1128 (0x9867C+0xADEC+0x468 hex)
SAVE: Size of TOC: 4452 (0x1164 hex)
SAVE: No .loader section relocation entries exist for the .text section.
(ld): rc
RC: Highest return code was 0.
Note: RC is 0, rather than 4 (warnings)
Now, lets try removing ALL the external libraries (better, all
arguments from -fopenmp to the end of command)
gcc -Wl,-bnoquiet -std=gnu99 -shared -Wl,-brtl -Wl,-G -Wl,-bexpall
-Wl,-bnoentry -o stats.so init.o kmeans.o ansari.o bandwidth
s.o chisqsim.o d2x2xk.o fexact.o kendall.o ks.o line.o smooth.o prho.o
swilk.o ksmooth.o loessc.o monoSpl.o isoreg.o Srunmed.o d
blcen.o distance.o hclust-utils.o nls.o rWishart.o HoltWinters.o
PPsum.o arima.o burg.o filter.o mAR.o pacf.o starma.o port.o fa
mily.o sbart.o approx.o loglin.o lowess.o massdist.o splines.o lm.o
complete_cases.o cov.o deriv.o fft.o fourier.o model.o optim
.o optimize.o integrate.o random.o distn.o zeroin.o rcont.o
influence.o bsplvd.o bvalue.o bvalus.o loessf.o ppr.o qsbart.o sgram
.o sinerp.o sslvrg.o stxwx.o hclust.o kmns.o eureka.o stl.o portsrc.o lminfl.o
(ld): lib /opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4/../../../libgcc_s.a
(ld): lib /usr/lib/libc.a
LIBRARY: Shared object libgcc_s.a[shr.o]: 127 symbols imported.
LIBRARY: Shared object libc.a[shr.o]: 3287 symbols imported.
LIBRARY: Shared object libc.a[meth.o]: 2 symbols imported.
LIBRARY: Shared object libc.a[posix_aio.o]: 20 symbols imported.
LIBRARY: Shared object libc.a[aio.o]: 18 symbols imported.
LIBRARY: Shared object libc.a[pse.o]: 8 symbols imported.
LIBRARY: Shared object libc.a[dl.o]: 4 symbols imported.
LIBRARY: Shared object libc.a[pty.o]: 1 symbols imported.
LIBRARY: Shared object libc.a[cthread.o]: 25 symbols imported.
LIBRARY: Shared object libc.a[uchar.o]: 4 symbols imported.
FILELIST: Number of previously inserted files processed: 73
(ld): exports /tmp//ccsv1Vg9.x
EXPORTS: Symbols exported: 312
(ld): initfini _GLOBAL__FI_stats_so _GLOBAL__FD_stats_so
(ld): resolve
RESOLVE: 1325 of 6197 symbols were kept.
(ld): addgl /usr/lib/glink.o
ADDGL: Glink code added for 505 symbols.
(ld): mismatch
MISMATCH: No type mismatches exist.
(ld): comprld
COMPRLD: Kept 10401 of 10401 relocation entries.
(ld): origin page 0x10000000 0x20000000
(ld): libpath /opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4:/opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4/../../..:/usr/lib:/lib
LIBPATH: Library path set to
/opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4:/opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4/../../..:/usr/lib:/lib
(ld): save SRE .
SAVE: Section sizes = 575900+12696+860 (0x8C99C+0x3198+0x35C hex)
SAVE: Size of TOC: 4016 (0xFB0 hex)
SAVE: No .loader section relocation entries exist for the .text section.
(ld): rc
RC: Highest return code was 0.
This is the same in all cases:
EXPORTS: Symbols exported: 312
but we have different SIZES:
1) SAVE: Section sizes = 582204+13364+884 (0x8E23C+0x3434+0x374 hex)
2) SAVE: Section sizes = 624252+44524+1128 (0x9867C+0xADEC+0x468 hex)
3) SAVE: Section sizes = 575900+12696+860 (0x8C99C+0x3198+0x35C hex)
The size of the TOC varies accordingly.
Now, for a final test - remove all the -Wl,... options except for the
argument -G (-Wl,-G) and see what we get:
gcc -Wl,-bnoquiet -std=gnu99 -Wl,-G -o stats.so init.o kmeans.o
ansari.o bandwidths.o chisqsim.o d2x2xk.o fexact.o kendall.o ks.o
line.o smooth.o prho.o swilk.o ksmooth.o loessc.o monoSpl.o isoreg.o
Srunmed.o dblcen.o distance.o hclust-utils.o nls.o rWishart.o
HoltWinters.o PPsum.o arima.o burg.o filter.o mAR.o pacf.o starma.o
port.o family.o sbart.o approx.o loglin.o lowess.o massdist.o
splines.o lm.o complete_cases.o cov.o deriv.o fft.o fourier.o model.o
optim.o optimize.o integrate.o random.o distn.o zeroin.o rcont.o
influence.o bsplvd.o bvalue.o bvalus.o loessf.o ppr.o qsbart.o sgram.o
sinerp.o sslvrg.o stxwx.o hclust.o kmns.o eureka.o stl.o portsrc.o
lminfl.o
(ld): i stl.o
(ld): i portsrc.o
(ld): i lminfl.o
(ld): i /opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4/libgcc.a
(ld): i /opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4/libgcc_eh.a
(ld): lib /usr/lib/libc.a
LIBRARY: Shared object libc.a[shr.o]: 3287 symbols imported.
LIBRARY: Shared object libc.a[meth.o]: 2 symbols imported.
LIBRARY: Shared object libc.a[posix_aio.o]: 20 symbols imported.
LIBRARY: Shared object libc.a[aio.o]: 18 symbols imported.
LIBRARY: Shared object libc.a[pse.o]: 8 symbols imported.
LIBRARY: Shared object libc.a[dl.o]: 4 symbols imported.
LIBRARY: Shared object libc.a[pty.o]: 1 symbols imported.
LIBRARY: Shared object libc.a[cthread.o]: 25 symbols imported.
LIBRARY: Shared object libc.a[uchar.o]: 4 symbols imported.
FILELIST: Number of previously inserted files processed: 74
(ld): resolve
RESOLVE: 29 of 6161 symbols were kept.
(ld): addgl /usr/lib/glink.o
ADDGL: Glink code added for 2 symbols.
(ld): mismatch
MISMATCH: No type mismatches exist.
(ld): comprld
COMPRLD: Kept 36 of 36 relocation entries.
(ld): origin page 0x10000000 0x20000000
(ld): libpath /opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4:/opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4/../../..:/usr/lib:/lib
LIBPATH: Library path set to
/opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4:/opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4/../../..:/usr/lib:/lib
(ld): save SRE .
SAVE: Section sizes = 680+240+4 (0x2A8+0xF0+0x4 hex)
SAVE: Size of TOC: 68 (0x44 hex)
SAVE: No .loader section relocation entries exist for the .text section.
(ld): rc
RC: Highest return code was 0.
Note the SIZES:
SAVE: Section sizes = 680+240+4 (0x2A8+0xF0+0x4 hex)
SAVE: Size of TOC: 68 (0x44 hex)
** If stats.so is shareable - we will see a header
root at x072:[/data/prj/cran/32/R-3.1.3.1/src/library/stats/src]dump -H stats.so
stats.so:
***Loader Section***
Loader Header Information
VERSION# #SYMtableENT #RELOCent LENidSTR
0x00000001 0x00000007 0x0000000e 0x00000080
#IMPfilID OFFidSTR LENstrTBL OFFstrTBL
0x00000003 0x00000170 0x0000002a 0x000001f0
***Import File Strings***
INDEX PATH BASE MEMBER
0 /opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4:/opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4/../../..:/usr/lib:/lib
Looking at the symbols in stats.so - this is now too far "the other way"
-G means
(ld): halt 4
(ld): setopt r/o->w
(ld): setopt nodelcsect
(ld): setopt noautoexp
(ld): setopt rtl
(ld): setopt nortllib
(ld): setopt symbolic:0
(ld): setfflag 4
(ld): savename stats.so
(ld): filelist 74 1
(ld): setopt noprogram
** OOPS - we do not want to load crt0.o and/or init.o I think!
(ld): i /lib/crt0.o
(ld): i init.o
Just adding -Wl,-bnoentry does not suffice, so... adding -Wl-bexpall
gives us some body:
(ld): lib /usr/lib/libc.a
LIBRARY: Shared object libc.a[shr.o]: 3287 symbols imported.
LIBRARY: Shared object libc.a[meth.o]: 2 symbols imported.
LIBRARY: Shared object libc.a[posix_aio.o]: 20 symbols imported.
LIBRARY: Shared object libc.a[aio.o]: 18 symbols imported.
LIBRARY: Shared object libc.a[pse.o]: 8 symbols imported.
LIBRARY: Shared object libc.a[dl.o]: 4 symbols imported.
LIBRARY: Shared object libc.a[pty.o]: 1 symbols imported.
LIBRARY: Shared object libc.a[cthread.o]: 25 symbols imported.
LIBRARY: Shared object libc.a[uchar.o]: 4 symbols imported.
FILELIST: Number of previously inserted files processed: 74
(ld): resolve
RESOLVE: 1324 of 6388 symbols were kept.
(ld): addgl /usr/lib/glink.o
ADDGL: Glink code added for 505 symbols.
(ld): mismatch
MISMATCH: No type mismatches exist.
(ld): comprld
COMPRLD: Kept 10394 of 10394 relocation entries.
(ld): origin page 0x10000000 0x20000000
(ld): libpath /opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4:/opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4/../../..:/usr/lib:/lib
LIBPATH: Library path set to
/opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4:/opt/lib/gcc/powerpc-ibm-aix5.3.0.0/4.7.4/../../..:/usr/lib:/lib
(ld): save SRE .
SAVE: Section sizes = 575596+12560+872 (0x8C86C+0x3110+0x368 hex)
SAVE: Size of TOC: 4012 (0xFAC hex)
SAVE: No .loader section relocation entries exist for the .text section.
(ld): rc
RC: Highest return code was 0.
root at x072:[/data/prj/cran/32/R-3.1.3.1/src/library/stats/src]ls -l stats.so
-rwxr-xr-x 1 root system 1456186 Oct 24 17:36 stats.so
On Sun, Oct 18, 2015 at 9:06 PM, aixtools <aixtools at gmail.com> wrote:
On 2015-10-15 15:02, Prof Brian Ripley wrote:
On 15/10/2015 13:32, Michael Felt wrote:
Hi. Just wanted to let you know I am getting close to packaging R for AIX in
rephrase - would like to be active in keeping R binaries current for AIX. My interest in not in R per se (rather a colleague who has a project that uses R, so I hope to assist him, and others like him).
Which version? (You mentioned 3.1.3 and 3.2.2 far below.) There is little value in reporting on frozen branches, and most value in reporting on R-devel where all the current changes have been incorporated.
The reason for reporting old and current releases is to understand what is
new between releases, and what has been around for "awhile".
Note: in the future I shall edit all the "you cannot build, could not
determine ... messages" - and as much as possible, shall focus on R-devel
"packaging".
I (attempt to) 'package' a lot of Opensource tools for AIX. Generally, the
problems are not application code related (sometimes a function available on
one platform, e.g. Linux, but not on AIX) - but most are, or can be
resolved, with modifications via configure.ac, Makefile.in, etc..
Sincerely,
Michael
"Details"...
When configure does complete - config.log starts with:
It was created by R configure 3.1.3, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ ./configure --prefix=/opt --sysconfdir=/var/R/etc
--sharedstatedir=/var/R/com --localstatedir=/var/R --mandir=/usr/share/man
--infodir=/opt/share/info/R --with-readline=no --with-x=no
As I see you are using a recent autoconf (and I shall guess a recent
automake) I would like to try a more version of libtool and see if that
corrects anything. However, even in R-devel I do not see, directly, how you
are using these tools (some projects include either a setup.sh or a
buildconf script to standardize how the project does this.) I am quite
capable of just calling the tools in sequence, but would prefer to follow
your procedure.
I
Starting again - fresh 3.1.3, 3.2.2 and R-devel - all in 32-bit mode, for
the start. The goal is a 64-bit build so that memory management will be
easier.
This is my "standard command for building a package"
CPPFLAGS="-I/opt/buildaix/include -I/opt/include" CFLAGS="-I/opt/include
-I/opt/buildaix/include -O2" ./configure \
--prefix=/opt \
--sysconfdir=/var/R/etc \
--sharedstatedir=/var/R/com \
--localstatedir=/var/R \
--mandir=/usr/share/man \
--infodir=/opt/share/info/R --with-readline=no --with-x=no
Results for 3.1.3
configure: WARNING: you cannot build PDF versions of the R manuals
configure: WARNING: you cannot build PDF versions of vignettes and help
pages
configure: WARNING: you cannot build info or HTML versions of the R manuals
configure: WARNING: I could not determine a browser
configure: WARNING: I could not determine a PDF viewer
configure: WARNING: you cannot build info or HTML versions of the R manuals
configure: WARNING: you cannot build PDF versions of the R manuals
configure: WARNING: you cannot build PDF versions of vignettes and help
pages
configure: WARNING: I could not determine a browser
configure: WARNING: I could not determine a PDF viewer
+ make > .buildaix/make.out
sys-std.c: In function 'Rstd_ChooseFile':
sys-std.c:1186:5: warning: implicit declaration of function 'isspace'
[-Wimplicit-function-declaration]
connections.c: In function 'fifo_open':
connections.c:885:5: warning: implicit declaration of function 'open'
[-Wimplicit-function-declaration]
main.c: In function 'dummy_ii':
main.c:1594:5: warning: function returns address of local variable [enabled
by default]
ld: 0711-224 WARNING: Duplicate symbol: .memcpy
ld: 0711-224 WARNING: Duplicate symbol: memcpy
ld: 0711-224 WARNING: Duplicate symbol: .bcopy
ld: 0711-224 WARNING: Duplicate symbol: bcopy
ld: 0711-224 WARNING: Duplicate symbol: .strcmp
ld: 0711-224 WARNING: Duplicate symbol: strcmp
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more
information.
Warning in solve.default(rgb) :
unable to load shared object
'/data/prj/cran/32/R-3.1.3/modules//lapack.so':
rtld: 0712-001 Symbol logf was referenced
from module /data/prj/cran/32/R-3.1.3/lib/libRlapack.so(), but a
runtime definition
of the symbol was not found.
Error in solve.default(rgb) : LAPACK routines cannot be loaded
Error: unable to load R code in package 'grDevices'
Execution halted
make: 1254-004 The error code from the last command is 1.
...
Stop.
make returned an error
root at x072:[/data/prj/cran/32/R-3.1.3]
++++++
Notes: Last April I was successful with building R - I do not recall
specifically how I changed the release. I shall determine what I did to get
it to build normally.
++++++
Results for 3.2.2
configure: WARNING: you cannot build PDF versions of the R manuals
configure: WARNING: you cannot build PDF versions of vignettes and help
pages
configure: WARNING: you cannot build info or HTML versions of the R manuals
configure: WARNING: I could not determine a browser
configure: WARNING: I could not determine a PDF viewer
configure: WARNING: you cannot build info or HTML versions of the R manuals
configure: WARNING: you cannot build PDF versions of the R manuals
configure: WARNING: you cannot build PDF versions of vignettes and help
pages
configure: WARNING: I could not determine a browser
configure: WARNING: I could not determine a PDF viewer
+ make > .buildaix/make.out
sys-std.c: In function 'Rstd_ChooseFile':
sys-std.c:1189:5: warning: implicit declaration of function 'isspace'
[-Wimplicit-function-declaration]
connections.c: In function 'fifo_open':
connections.c:876:5: warning: implicit declaration of function 'open'
[-Wimplicit-function-declaration]
main.c: In function 'dummy_ii':
main.c:1598:5: warning: function returns address of local variable [enabled
by default]
ld: 0711-415 WARNING: Symbol BM_norm_keep is already exported.
ld: 0711-415 WARNING: Symbol LoadInitFile is already exported.
ld: 0711-415 WARNING: Symbol N01_kind is already exported.
ld: 0711-415 WARNING: Symbol R_ReadItemDepth is already exported.
ld: 0711-224 WARNING: Duplicate symbol: LoadInitFile
ld: 0711-224 WARNING: Duplicate symbol: BM_norm_keep
ld: 0711-224 WARNING: Duplicate symbol: N01_kind
ld: 0711-224 WARNING: Duplicate symbol: R_ReadItemDepth
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more
information.
ld: 0711-415 WARNING: Symbol BM_norm_keep is already exported.
ld: 0711-415 WARNING: Symbol LoadInitFile is already exported.
ld: 0711-415 WARNING: Symbol N01_kind is already exported.
ld: 0711-415 WARNING: Symbol R_ReadItemDepth is already exported.
ld: 0711-224 WARNING: Duplicate symbol: LoadInitFile
ld: 0711-224 WARNING: Duplicate symbol: BM_norm_keep
ld: 0711-224 WARNING: Duplicate symbol: N01_kind
ld: 0711-224 WARNING: Duplicate symbol: R_ReadItemDepth
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more
information.
ld: 0711-224 WARNING: Duplicate symbol: .memcpy
ld: 0711-224 WARNING: Duplicate symbol: memcpy
ld: 0711-224 WARNING: Duplicate symbol: .bcopy
ld: 0711-224 WARNING: Duplicate symbol: bcopy
ld: 0711-224 WARNING: Duplicate symbol: .strcmp
ld: 0711-224 WARNING: Duplicate symbol: strcmp
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more
information.
/bin/sh: There is no process to read data written to a pipe.
Warning in solve.default(rgb) :
unable to load shared object
'/data/prj/cran/32/R-3.2.2/modules//lapack.so':
rtld: 0712-001 Symbol logf was referenced
from module /data/prj/cran/32/R-3.2.2/lib/libRlapack.so(), but a
runtime definition
of the symbol was not found.
Error in solve.default(rgb) : LAPACK routines cannot be loaded
Error: unable to load R code in package 'grDevices'
Execution halted
make: 1254-004 The error code from the last command is 1.
...
make returned an error
+++++
Here there are similiar - and new problems. The error re: rtld is usually a
compiler (actually ld) flag error - a routine is expected to be exported in
a shared object, but the object is still "static".
I have seen this same problem with at least one R module.
I still am unsure why some functions are being defined double - that info
will come later
root at x072:[/data/prj/cran/32/R-3.2.2]
+++++
From R-devel_2015-10-17.tar.bz2
configure: WARNING: you cannot build PDF versions of the R manuals
configure: WARNING: you cannot build PDF versions of vignettes and help
pages
configure: WARNING: you cannot build info or HTML versions of the R manuals
configure: WARNING: I could not determine a browser
configure: WARNING: I could not determine a PDF viewer
configure: error: bzip2 library and headers are required
buildaix: ./configure ... returned an error
try doing "grep configure: config.log | tail" for possible explanation
try "./configure --help" for additional arguments to buildaix
++++ config.log configure: comments are ++++
configure:35647: checking bzlib.h presence
configure:35647: gcc -E -I/opt/buildaix/include -I/opt/include conftest.c
configure:35647: $? = 1
configure: failed program was:
configure:35647: result: no
configure:35647: checking for bzlib.h
configure:35647: result: no
configure:35712: checking whether bzip2 support suffices
configure:35719: error: bzip2 library and headers are required
configure: exit 1
++++ ++++
Here is a completely new kind of "problem" - a demand for an include file.
bzip2 is available, but configure is looking for it in a different way and
now configure fails.
One comment - the libtool.m4 I see used is quite old. The one I have on my system is 2.4.6, and what I see in R says:
R-devel has 2.4.6 .
I am hoping a new libtool will clean up most of the manual work now needed.
But libtool is hardly used in building R.
# Which release of libtool.m4 was used? macro_version=2.2.6 macro_revision=1.3012 This may be all that is needed to cleanup what I am doing manually. working with gcc I have done the following for 64-bit building export OBJECT_MODE=64 export CFLAGS="-maix64 -O2" export FFLAGS="-maix64 -O2"
See the manual: flags such as -maix64 should be part of CC, not CFLAGS. That explains a lot of what was reported. Specifically, https://cran.r-project.org/doc/manuals/r-patched/R-admin.html#Essential-programs-and-libraries and https://cran.r-project.org/doc/manuals/r-patched/R-admin.html#AIX . It is safer to put such things on the configure command line or in a config.site file (they will be found when updating if you do). [Lots of test output removed.]