Hello everyone! I was trying to compile fdlibm for prizmSDK 0.3, but he won't compile, nor even init the compilation:


Code:
k_standard.c:16:19: fatal error: errno.h: No such file or directory
compilation terminated.
make: *** [k_standard.o] Error 1


Why won't it compile? errno.h is not in the include folder, and trying to compile with the most release of libfxcg here gives the same error...
WHat should i do?
Well, try creating your own errno.h since there's no actual code, they're just defines. You could also use one published somewhere on the internet or use local copies from /usr/include/{*,.}/errno*.h
The file exists in the canonical include directory, so there's something misconfigured in your build environment.
I'm not ionly including the header, I tried replacing the libraires too!
I'm using too the Prizsdk just like It given in the PRizm Wiki... With only prizm-ld edited to incrase ram to 500k and another batch in my projects to copy the g3a directly on my prizm...

EDIT/ now, I've fixed the Makefile, and Libm.a is compiled, buyt when using it (-lm to add it Makefile, right?), THere is an error about libm.a


Code:
H:/Dev/Casio/PrizmSDK-0.3/lib\libm.a: could not read symbols: File format not re
cognized
collect2: ld returned 1 exit status
make[1]: *** [H:/Dev/Casio/PrizmSDK-0.3/projects/trixel/trixel.bin] Error 1
make: *** [build] Error 2
My point was that the include file exists, so there's something wrong with your include paths (or mysteriously missing files). Paste your Makefile for me, and ensure you have errno.h in sdk/include.
I tried to fix the Makefile, got another copy of PrizmSDK, and it won't again find errno, even with putting the SDK's path in %PATH%

Here's the Makefile:

Code:
#
#  @(#)Makefile 1.4 95/01/18
#
#  ====================================================
#  Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
#
#  Developed at SunSoft, a Sun Microsystems, Inc. business.
#  Permission to use, copy, modify, and distribute this
#  software is freely granted, provided that this notice
#  is preserved.
#  ====================================================
#
#

#
# There are two options in making libm at fdlibm compile time:
#    _IEEE_LIBM    --- IEEE libm; smaller, and somewhat faster
#   _MULTI_LIBM   --- Support multi-standard at runtime by
#             imposing wrapper functions defined in
#             fdlibm.h:
#            _IEEE_MODE    -- IEEE
#            _XOPEN_MODE    -- X/OPEN
#            _POSIX_MODE    -- POSIX/ANSI
#            _SVID3_MODE    -- SVID
#
# Here is how to set up CFLAGS to create the desired libm at
# compile time:
#
#    CFLAGS = -D_IEEE_LIBM      ... IEEE libm (recommended)
#   CFLAGS = -D_SVID3_MODE   ... Multi-standard supported
#                   libm with SVID as the
#                   default standard
#   CFLAGS = -D_XOPEN_MODE   ... Multi-standard supported
#                   libm with XOPEN as the
#                   default standard
#   CFLAGS = -D_POSIX_MODE   ... Multi-standard supported
#                   libm with POSIX as the
#                   default standard
#   CFLAGS =          ... Multi-standard supported
#                   libm with IEEE as the
#                   default standard
#
# NOTE: if scalb's second arguement is an int, then one must
# define _SCALB_INT in CFLAGS. The default prototype of scalb
# is double scalb(double, double)
#


#
# Default IEEE libm
#
CFLAGS = -D_IEEE_LIBM

CC = sh3eb-elf-gcc

INCFILES = fdlibm.h
.INIT: $(INCFILES)
.KEEP_STATE:
src =    k_standard.c k_rem_pio2.c \
   k_cos.c k_sin.c k_tan.c \
   e_acos.c e_acosh.c e_asin.c e_atan2.c \
   e_atanh.c e_cosh.c e_exp.c e_fmod.c \
   e_gamma.c e_gamma_r.c e_hypot.c e_j0.c \
   e_j1.c e_jn.c e_lgamma.c e_lgamma_r.c \
   e_log.c e_log10.c e_pow.c e_rem_pio2.c e_remainder.c \
   e_scalb.c e_sinh.c e_sqrt.c \
   w_acos.c w_acosh.c w_asin.c w_atan2.c \
   w_atanh.c w_cosh.c w_exp.c w_fmod.c \
   w_gamma.c w_gamma_r.c w_hypot.c w_j0.c \
   w_j1.c w_jn.c w_lgamma.c w_lgamma_r.c \
   w_log.c w_log10.c w_pow.c w_remainder.c \
   w_scalb.c w_sinh.c w_sqrt.c \
   s_asinh.c s_atan.c s_cbrt.c s_ceil.c s_copysign.c \
   s_cos.c s_erf.c s_expm1.c s_fabs.c s_finite.c s_floor.c \
   s_frexp.c s_ilogb.c s_isnan.c s_ldexp.c s_lib_version.c \
   s_log1p.c s_logb.c s_matherr.c s_modf.c s_nextafter.c \
   s_rint.c s_scalbn.c s_signgam.c s_significand.c s_sin.c \
   s_tan.c s_tanh.c

obj =    k_standard.o k_rem_pio2.o \
   k_cos.o k_sin.o k_tan.o \
   e_acos.o e_acosh.o e_asin.o e_atan2.o \
   e_atanh.o e_cosh.o e_exp.o e_fmod.o \
   e_gamma.o e_gamma_r.o e_hypot.o e_j0.o \
   e_j1.o e_jn.o e_lgamma.o e_lgamma_r.o \
   e_log.o e_log10.o e_pow.o e_rem_pio2.o e_remainder.o  \
   e_scalb.o e_sinh.o e_sqrt.o \
   w_acos.o w_acosh.o w_asin.o w_atan2.o \
   w_atanh.o w_cosh.o w_exp.o w_fmod.o \
   w_gamma.o w_gamma_r.o w_hypot.o w_j0.o \
   w_j1.o w_jn.o w_lgamma.o w_lgamma_r.o \
   w_log.o w_log10.o w_pow.o w_remainder.o \
   w_scalb.o w_sinh.o w_sqrt.o \
   s_asinh.o s_atan.o s_cbrt.o s_ceil.o s_copysign.o \
   s_cos.o s_erf.o s_expm1.o s_fabs.o s_finite.o s_floor.o \
   s_frexp.o s_ilogb.o s_isnan.o s_ldexp.o s_lib_version.o \
   s_log1p.o s_logb.o s_matherr.o s_modf.o s_nextafter.o \
   s_rint.o s_scalbn.o s_signgam.o s_significand.o s_sin.o \
   s_tan.o s_tanh.o

all: libm.a

libm.a : $(obj)
   sh3eb-elf-ar cru libm.a $(obj)
   sh3eb-elf-ranlib libm.a

source: $(src) README

clean:
   rm *.o
   rm *.a


And the lib : http://dl.dropbox.com/u/23313407/AUTRES/libm.a compiled with CC flag : GCC, because sh3eb-elf-gcc won't work, ging the "errno" error
They way you're going about this makes it hard to help, because you seem to be trying things randomly until something happens, and based on your comments on SAX, you got it to compile before with some other compiler.
From unpacking your archive, that is indeed the case:
Code:
$ ar x libm.a
$ file s_tanh.o
s_tanh.o: 80386 COFF executable not stripped - version 30821
Whereas it should look like those provided by libc:
Code:
$ ar x libc.a
$ file stdlib.o
stdlib.o: ELF 32-bit MSB relocatable, Renesas SH, version 1 (SYSV), not stripped
So of course that didn't work, you built it for the wrong system.

I suspect your sh3 compiler is confused about where to look for include files (which seems unusual in any case, since we're actually dumping things in the compiler's global include directory, if I correctly understand how it's configured). Try explicitly specifying the include path in your CLAGS. Something like -Ipath/to/include.
Another erros! :p

Code:
H:/Dev/Casio/PrizmSDK-0.3/lib\libm.a(e_sqrt.o): In function `___ieee754_sqrt':
e_sqrt.c:(.text+0x598): undefined reference to `___gedf2'
H:/Dev/Casio/PrizmSDK-0.3/lib\libm.a(k_rem_pio2.o): In function `___kernel_rem_p
io2':
k_rem_pio2.c:(.text+0x630): undefined reference to `___gedf2'
k_rem_pio2.c:(.text+0xbf4): undefined reference to `___gedf2'
collect2: ld returned 1 exit status
make[1]: *** [H:/Dev/Casio/PrizmSDK-0.3/projects/trixel/trixel.bin] Error 1
make: *** [build] Error 2
Since the old distribution CFLAGS are probably overzealous at this point, I think you need to explicitly link against libgcc. The required symbol (which is a floating-point >= check) is indeed exported by libgcc:
Code:
$ nm -s /var/lib/gcc/sh3eb-elf/4.7.2/libgcc.a | grep ___gedf2
___gedf2 in _ge_df.o
         U ___gedf2
00000000 T ___gedf2


So -lgcc should help with that, assuming the old Windows binaries have the same features as my build.
In my project, lgcc is already present, unless you mean put lgcc in the fdlibm's Makefile.
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 1
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement