I'm trying to run VCS under linux but get the following message when trying to compile a verilog design:
------------------------------------------------------------------------------------------
gcc -o ../simv 5NrI_d.o 5NrIB_d.o nE5Z_1_d.o SIM_l.o /usr/cad/vcs/gui/virsim/linux/vcdplus/vcs7_1_0_1/libvirsim.a /usr/cad/vcs/linux/lib/libvcsnew.a -ldl -lc -lm -ldl
/usr/cad/vcs/linux/lib/libvcsnew.a(lib.o)(.text+0xc0d50): In function `vcsd_user_crypt_filter':
/u/source/src/interfaces/flexlm.syn/v6.1-vcsd/i86_r6/../machind/lmappfil.c:899: `sys_errlist' is deprecated; use `strerror' or `strerror_r' instead
/usr/cad/vcs/linux/lib/libvcsnew.a(lib.o)(.text+0xc0d3a):/u/source/src/interfaces/flexlm.syn/v6.1-vcsd/i86_r6/../machind/lmappfil.c:899: `sys_nerr' is deprecated; use `strerror' or `strerror_r' instead
/usr/cad/vcs/gui/virsim/linux/vcdplus/vcs7_1_0_1/libvirsim.a(ivcspli7_1_0_1.o)(.text+0xa4b1): In function `vpCallVcdPlusFile':
: undefined reference to `__ctype_b'
/usr/cad/vcs/gui/virsim/linux/vcdplus/vcs7_1_0_1/libvirsim.a(ivcspli7_1_0_1.o)(.text+0x29158): In function `vs_clStrCmpCI(char *, char *)':
: undefined reference to `__ctype_toupper'
/usr/cad/vcs/gui/virsim/linux/vcdplus/vcs7_1_0_1/libvirsim.a(ivcspli7_1_0_1.o)(.text+0x291b5): In function `vs_clStrCmpCI(char *, char *)':
: undefined reference to `__ctype_toupper'
/usr/cad/vcs/gui/virsim/linux/vcdplus/vcs7_1_0_1/libvirsim.a(ivcspli7_1_0_1.o)(.text+0x291d3): In function `vs_clStrCmpCI(char *, char *)':
: undefined reference to `__ctype_toupper'
.
.
.
.
and on and on
------------------------------------------------------------------------------------------
I have seen the same error messages before with Scirocco (2003.3) and have managed to fix it. I'll warn you now that it is not exactly a clean fix and would probably be frowned upon in a production environment even if it works for you. I assume the same fix might work for VCS too, but I give no guarantee.
This problem happens because Synopsys requires glibc 2.2. All recent linux distributions use newer glibc.
The way to fix it is:
* Make a backup of .../vcs/gui/virsim/linux/vcdplus/vcs7_1_0_1/libvirsim.a. This is very important!
* Download glibc 2.2 source and unpack it somewhere
* Compile ctype.c (from memory I think that's what it is called) to get ctype.o
* Use the 'ar' command from binutils to unpack the object files from libvirsim.a (this file is different from the one to patch for Scirocco). You now have a directory with lots of .o files.
* Copy ctype.o into this directory.
* Use the 'ar' command to repack the object files into libvirsim.a
This only fixes the problem with __ctype_*. The strerror/strerror_r message will still be there, but that is only a warning and doesn't stop Scirocco (and hopefully not VCS) from working.
Thanks for the idea.
I have some problems implementing it, though.
first, when I unpack the libvirsim.a, there is only one files there: ivcspli7_1_0_1.o
second, being an inexprienced linux user, I don't know how to copile ctype.c independently so I'd appreciate it if you could send me the compiled file (ctype.o).