Re: [R] Failure to execute R CMD SHLIB successfully

2015-02-04 Thread Jeroen Ooms
On Sat, Jan 31, 2015 at 1:36 PM, Fisher Dennis fis...@plessthan.com wrote:

 followed by a series of errors:
  gcc -m32 -shared -s -static-libgcc -o ../compiled/Windows32.so tmp.def
 ConvertSAS.o CKHashTable.o readstat_convert.o readstat_bits.o readstat_io.o
 readstat_sas.o -Ld:/RCompile/CRANpkg/extralibs64/local/lib/i386
 -Ld:/RCompile/CRANpkg/extralibs64/local/lib
 -LC:/PROGRA~1/R/R-31~1.2/bin/i386 -lR
  readstat_convert.o:readstat_convert.c:(.text+0x42): undefined reference
 to `_imp__libiconv'
  readstat_sas.o:readstat_sas.c:(.text+0x10b5): undefined reference to
 `_imp__libiconv_close'
  readstat_sas.o:readstat_sas.c:(.text+0x1126): undefined reference to
 `_imp__libiconv_open'
  readstat_sas.o:readstat_sas.c:(.text+0x1808): undefined reference to
 `dprintf'
  readstat_sas.o:readstat_sas.c:(.text+0x1da1): undefined reference to
 `_imp__libiconv_open'
  readstat_sas.o:readstat_sas.c:(.text+0x1de4): undefined reference to
 `_imp__libiconv_close'
  collect2: ld returned 1 exit status



The windows build of R includes a special version of iconv (Riconv.dll in
the same dir as R.exe). Therefore if you include iconv.h somewhere, you
also need to link to Riconv.dll in your Makevars.win:

PKG_LIBS= -lRiconv

[[alternative HTML version deleted]]

__
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


[R] Failure to execute R CMD SHLIB successfully

2015-01-31 Thread Fisher Dennis
R 3.1.2
Windows 7

Colleagues

I am working with c code that reads sas7bdat files into R.  I have been 
successful in compiling and running the code in both OS X and Windows.  
Recently, the author of the c code added code that calls iconv.h (in order to 
convert encodings).  Using the new version of the c code, I can run compile and 
run the code in OS X without problems.  However, when I run the code in 
Windows, I encounter a series of warnings, followed by what appear to be errors 
— and the code is not compiled.  

I have installed the latest version of Rtools and I have set the path as 
follows:
set PATH=c:\Rtools\bin;c:\Rtools\gcc-4.6.3\bin;c:\program files 
(c86)\gnuwin32\bin;c:\MiKTeX\miktex\bin;%R32%;c:\windows;c:\windows\system32
where R32 is the path to the 32-but version of R

The command that I execute is:
R CMD SHLIB -o ../compiled/Windows32.so ConvertSAS.c CKHashTable.c 
readstat_convert.c readstat_bits.c readstat_io.c readstat_sas.c)

I get a series of warnings:
 gcc -m32 -IC:/PROGRA~1/R/R-31~1.2/include -DNDEBUG 
 -Id:/RCompile/CRANpkg/extralibs64/local/include -O3 -Wall  -std=gnu99 
 -mtune=core2 -c ConvertSAS.c -o ConvertSAS.o
 gcc -m32 -IC:/PROGRA~1/R/R-31~1.2/include -DNDEBUG 
 -Id:/RCompile/CRANpkg/extralibs64/local/include -O3 -Wall  -std=gnu99 
 -mtune=core2 -c CKHashTable.c -o CKHashTable.o
 gcc -m32 -IC:/PROGRA~1/R/R-31~1.2/include -DNDEBUG 
 -Id:/RCompile/CRANpkg/extralibs64/local/include -O3 -Wall  -std=gnu99 
 -mtune=core2 -c readstat_convert.c -o readstat_convert.o
 readstat_convert.c: In function 'readstat_convert':
 readstat_convert.c:23:9: warning: passing argument 2 of 'libiconv' from 
 incompatible pointer type [enabled by default]
 iconv.h:92:37: note: expected 'const char **' but argument is of type 'char 
 **'
 gcc -m32 -IC:/PROGRA~1/R/R-31~1.2/include -DNDEBUG 
 -Id:/RCompile/CRANpkg/extralibs64/local/include -O3 -Wall  -std=gnu99 
 -mtune=core2 -c readstat_bits.c -o readstat_bits.o
 readstat_bits.c: In function 'byteswap_float':
 readstat_bits.c:59:5: warning: dereferencing type-punned pointer will break 
 strict-aliasing rules [-Wstrict-aliasing]
 readstat_bits.c:60:5: warning: dereferencing type-punned pointer will break 
 strict-aliasing rules [-Wstrict-aliasing]
 readstat_bits.c: In function 'byteswap_double':
 readstat_bits.c:64:5: warning: dereferencing type-punned pointer will break 
 strict-aliasing rules [-Wstrict-aliasing]
 readstat_bits.c:65:5: warning: dereferencing type-punned pointer will break 
 strict-aliasing rules [-Wstrict-aliasing]
 gcc -m32 -IC:/PROGRA~1/R/R-31~1.2/include -DNDEBUG 
 -Id:/RCompile/CRANpkg/extralibs64/local/include -O3 -Wall  -std=gnu99 
 -mtune=core2 -c readstat_io.c -o readstat_io.o
 gcc -m32 -IC:/PROGRA~1/R/R-31~1.2/include -DNDEBUG 
 -Id:/RCompile/CRANpkg/extralibs64/local/include -O3 -Wall  -std=gnu99 
 -mtune=core2 -c readstat_sas.c -o readstat_sas.o
 readstat_sas.c: In function 'sas_read_header':
 readstat_sas.c:204:20: warning: variable 'a2' set but not used 
 [-Wunused-but-set-variable]
 readstat_sas.c: In function 'sas_parse_page_pass1':
 readstat_sas.c:788:23: warning: variable 'subheader_type' set but not used 
 [-Wunused-but-set-variable]
 readstat_sas.c:770:14: warning: variable 'page_type' set but not used 
 [-Wunused-but-set-variable]
 readstat_sas.c: In function 'sas_parse_page_pass2':
 readstat_sas.c:861:27: warning: variable 'subheader_type' set but not used 
 [-Wunused-but-set-variable]
 readstat_sas.c: In function 'parse_sas7bdat':
 readstat_sas.c:1029:9: warning: implicit declaration of function 'dprintf' 
 [-Wimplicit-function-declaration]
 
followed by a series of errors:
 gcc -m32 -shared -s -static-libgcc -o ../compiled/Windows32.so tmp.def 
 ConvertSAS.o CKHashTable.o readstat_convert.o readstat_bits.o readstat_io.o 
 readstat_sas.o -Ld:/RCompile/CRANpkg/extralibs64/local/lib/i386 
 -Ld:/RCompile/CRANpkg/extralibs64/local/lib -LC:/PROGRA~1/R/R-31~1.2/bin/i386 
 -lR
 readstat_convert.o:readstat_convert.c:(.text+0x42): undefined reference to 
 `_imp__libiconv'
 readstat_sas.o:readstat_sas.c:(.text+0x10b5): undefined reference to 
 `_imp__libiconv_close'
 readstat_sas.o:readstat_sas.c:(.text+0x1126): undefined reference to 
 `_imp__libiconv_open'
 readstat_sas.o:readstat_sas.c:(.text+0x1808): undefined reference to `dprintf'
 readstat_sas.o:readstat_sas.c:(.text+0x1da1): undefined reference to 
 `_imp__libiconv_open'
 readstat_sas.o:readstat_sas.c:(.text+0x1de4): undefined reference to 
 `_imp__libiconv_close'
 collect2: ld returned 1 exit status
 
The errors all reference libiconv.   Note that the first line in the errors 
references extralibs64.  I don’t understand where this is coming from since the 
gcc command is created by R CMD SHLIB using the 32-fit version of R.  I 
replaced both instance of extralibs64 with extralibs32 but the identical error 
messages appear.  

Does anyone have an idea as to the problem here? 

Any help would be